您的位置:首页 > 其它

hdoj 5523 Game 【博弈】

2015-12-10 21:47 302 查看

Game

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)

Total Submission(s): 1210 Accepted Submission(s): 419



[align=left]Problem Description[/align]
XY is playing a game:there are N pillar in a row,which numbered from 1 to n.Each pillar has a jewel.Now XY is standing on the S-th pillar and the exit is in the T-th pillar.XY can leave from the exit only after they get all the jewels.Each
time XY can move to adjacent pillar,or he can jump to boundary ( the first pillar or the N-th pillar) by using his superpower.However,he needs to follow a rule:if he left the pillar,he no can not get here anymore.In order to save his power,XY wants to use
the minimum number of superpower to pass the game.

[align=left]Input[/align]
There are multiple test cases, no more than 1000 cases.

For each case,the line contains three integers:N,S and T.(1≤N≤10000,1≤S,T≤N)


[align=left]Output[/align]
The output of each case will be a single integer on a line: the minimum number of using superpower or output -1 if he can't leave.

[align=left]Sample Input[/align]

4 1 4
4 1 3


[align=left]Sample Output[/align]

0
1代码:[code]#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#define mem(x,y) memset(x,y,sizeof(x))
#define SI(x) scanf("%d",&x)
using namespace std;

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

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: