题目
源地址:
http://poj.org/problem?id=2328
理解
猜数字游戏,还是比较熟悉的模型。 先确定一个正确数字,另一个人猜数字,然后回答猜测数字比正确数字是太高、太低还是正确。现在题中给定猜测的过程,让我们用程序验证这个猜测过程中,回答是否正确。
代码
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <sstream>
#include <fstream>
#define debug puts("-----")
#define pi (acos(-1.0))
#define eps (1e-8)
#define inf (1<<28)
using namespace std;
char str[3][20] = {"too high", "too low", "right on"};
int answer[1100];
int getnum[1100];
int getanswer(char ans[])
{
if (strcmp(str[0], ans) == 0)
{
return 1;
}
else if (strcmp(str[1], ans) == 0)
{
return -1;
}
else if (strcmp(str[2], ans) == 0)
{
return 0;
}
}
int main(int argc, char const *argv[])
{
char tmp[20];
int num, rightnum;
int i, j;
int flag;
while (scanf("%d", &num), num != 0)
{
getchar();
gets(tmp);
answer[0] = getanswer(tmp);
getnum[0] = num;
for (i = 0; answer[i] != 0; )
{
i++;
scanf("%d", &num);
getchar();
gets(tmp);
answer[i] = getanswer(tmp);
getnum[i] = num;
}
rightnum = getnum[i];
i++;
for (flag = 1, j = 0; j < i - 1; j++)
{
if (getnum[j] - rightnum > 0 && answer[j] == 1 )
{
continue;
}
else if (getnum[j] - rightnum < 0 && answer[j] == -1)
{
continue;
}
else
{
flag = 0;
break;
}
}
if (flag)
{
printf("Stan may be honest\n");
}
else if (flag == 0)
{
printf("Stan is dishonest\n");
}
}
return 0;
}
更新日志
- 2014年08月22日 已AC。