| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
谁救救我下,我已经晕了POJ1059 Chutes and Ladders谁能给出另外的一些测试数据;我不知道错在哪啊 总是WA??
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int *ramdom=new int[1000],square[101][2]={0},player[6][2]={0},players;
//ramdom用于保存随即掷出的点数;player[1][0]=56,表示玩家i在第56号格子上;player[1][1]=1,表示玩家的
//状态,0表示正常,1表示可多转一盘,-1表示下一句停一盘;square[][]前一个下标表示格子号,[][0]表示传
//状态,存储下一个传送的格子号;[][1]表示当前格子的turn,0正常,1可以多掷一盘,-1减一盘。
for(int i=0;i<1000;i++){ //输入随机数;
cin>>ramdom[i];
if (ramdom[i]==0)
break;
}
players=-1;
while(players!=0){
cin>>players; //输入参赛人数;
if(players==0) //玩家数为0时结束所有游戏;
break;
for(int square1,square2;;){ //初始化各个格子deliver状态;
cin>>square1>>square2;
if(square1==0 && square2==0)
break;
else
square[square1][0]=square2;
}
for(int turn=0;;){ //初始化各个格子的turn状态;
cin>>turn;
if(turn==0)
break;
if(turn<0)
square[(int)fabs((double)turn)][1]=-1;
else
square[turn][1]=1;
}
/*if(players==1){ //玩家数唯一时直接跳回;
cout<<players<<endl;
continue;
}*/
int winner;
for(int i=0,count=0;;i=(++i)%players){
if(player[i][1]==-1) //判断玩家状态;
continue;
oncemore:
if((player[i][0]+=ramdom[count])>100) //判断玩家格子数不会超过100;
player[i][0]-=ramdom[count];
if(square[player[i][0]][0]!=0) //判断当前格子是否发生传送;
player[i][0]=square[player[i][0]][0];
if(square[player[i][0]][1]==1){ //当前格子turn=1;
count++;
goto oncemore;
}
else
if(square[player[i][0]][1]==-1) //当前格子turn=-1;
player[i][1]=-1;
if(player[i][0]==100){ //决定胜利者;
winner=i+1;
break;
}
count++;
}
cout<<winner<<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator