您的位置:首页 > 其它

HDU 5523 Game(模拟)

2015-11-01 16:52 253 查看
题目地址:点击打开链接

思路:这道题坑还是比较多,比赛的时候忘考虑了都为1的情况结果一直wrong,hack别人的时候才知道,今天本来1A的,结果wrong了,原来我里面还有一个错误的部分

AC代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <cmath>
#include <cctype>

using namespace std;

int main()
{
int n,s,t;
while(scanf("%d%d%d",&n,&s,&t) != EOF)
{
if(n == 1 && s == 1 && t == 1)
printf("0\n");
else if(s == t)
printf("-1\n");
else if((s == 1 && t == n) || (t == 1 && s == n))
printf("0\n");
else if(s == t + 1 || t == s + 1)
printf("1\n");
else if(s == 1 || s == n)
printf("1\n");
else
printf("2\n");
}
return 0;
}

错误代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <cmath>
#include <cctype>

using namespace std;

int main()
{
int n,s,t;
while(scanf("%d%d%d",&n,&s,&t) != EOF)
{
if(n == 1 && s == 1 && t == 1)
printf("0\n");
else if(s == t)
printf("-1\n");
else if((s == 1 && t == n) || (t == 1 && s == n))
printf("0\n");
else if(s == t + 1 || t == s + 1)
printf("1\n");
else if(s > 1 && t > 1 && s < n && t < n)
printf("2\n");
else if(t == n || t == 1)
printf("1\n");
else if(s == 1 || s == n)
printf("1\n");
}
return 0;
}

我这个错误的原因是当t==1 || t == n 时输出的是1,而不是2,我考虑错了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: