暴力循环求解题目给出的值 1089 狼人杀
2018-09-10 21:32
92 查看
题目见PAT乙级1089
对于本题一个非常关键的点是暴力两重循环设出那两只狼,也就是
for(int i=1;i < N;i++){
for(int j=i+1;j<=N;j++){}
}
这一部分的代码,举一反三,包括解方程,我们没有办法和人一样代入解决,只能一个一个试这去求解。言归正传,本题还说有两个撒谎的,且有狼人撒谎但不是所有狼人撒欢,那么就说一个狼人一个好人撒谎了,我们只需要求得狼人和好人撒谎的次数,如果满足条件,即跳出循环输出即可,这样就是最优解,否则输出no solution.
#include <bits/stdc++.h> using namespace std; //对于机器来说我们只能暴力的循环设定谁是狼人 //如果狼人撒谎那么就+1 不是狼人撒谎也+1,因为两人撒谎所以一个狼人一个不是狼人 int num[15]; int main(){ int N; scanf("%d",&N); for(int i=1;i<=N;i++){ scanf("%d",&num[i]); } int w1=0,w2=0; int lieh=0,liew=0;//表示好人和狼人说假话的次数 for(int i=1;i<N;i++){//选取两个是狼人 for(int j=i+1;j<=N;j++){ lieh=0,liew=0; for(int k=1;k<=N;k++){ if((num[k]<0&&-num[k]!=i&&-num[k]!=j)||(num[k]>0&&(num[k]==i||num[k]==j))){//表示是说假话的 if(k==i||k==j)liew++; else lieh++; } } //需要从头到尾遍历一遍说的话,判断说谎次数 if(lieh==1&&liew==1){ w1=i; w2=j; break; } } if(w2)break; } if(w2)printf("%d %d",w1,w2); else printf("No Solution"); return 0; }阅读更多
相关文章推荐
- 整数输入有理循环小数 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。
- zoj--1089--Lotto---DFS VS 暴力求解
- 有理循环小数 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。
- 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。 例如: 输入: 1,5 则输出: 0.2 输入
- 一、 找出函数中存在的问题。以下题目均在Lab05项目中完成。2、 找出项目中存在的缺陷,并给出解决的方案(至少3个,不包含下面那个举例)。 说明:这里所说的缺陷不一定都是错误,而是明显需要改进的地方。 如:不可以无限输入密码,容易被暴力破解,存在安全隐患。
- 暴力求解——hdu 1799 循环多少次?
- C~K祝你元宵节快乐!—结构体数组+3重for循环暴力求解
- leetcode 373. Find K Pairs with Smallest Sums 暴力循环求解
- 题目1102:最小面积子矩阵(暴力求解&最大连续子序列)
- 题目求解:把以行为主序的数存放到对应以列为主序的数组中
- 循环题目
- python 题目一,给出一张数组map,输入起点和终点,找一通路
- The Shortest Path Gym - 101498L 暴力求解?
- zzulioj--1870--马拉松后记(暴力求解)
- 第七章:暴力求解法。第一部分
- 最大子段和暴力求解
- 证明求解约瑟夫斯问题的二进制左循环算法的正确性
- 51nod oj 1094 和为k的连续区间【纯暴力--二分求解】
- YT03-递推求解课后题目-1006 不容易系列之(4)——考新郎-(6.7日-烟台大学ACM预备队解题报告)
- HDU 2544 暴力求解最短路