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 |
今天晚上好郁闷 WA 好几题了 过了的大大能不能帮我看看#include <cstdio> #include <iostream> #include <string> using namespace std; int main(){ int k,kase,NumOfPeo,sum,i,j,now; //int card[10][52],CountNum[10],NumOfCard[10],f[52][14],last[10],mi; int card[11][55],CountNum[11],NumOfCard[11],f[55][15],last[11],mi; bool can; for(k=1,scanf("%d",&kase);k<=kase;k++){ scanf("%d",&NumOfPeo); sum=52; for(i=0;i<52;i++) scanf("%d",&card[0][i]); for(i=0;i<NumOfPeo;i++){ CountNum[i]=1; NumOfCard[i]=0; } NumOfCard[0]=52; can=true; now=0; while(sum&&can){ i=CountNum[now]; j=0; /*cout<<now<<' '<<CountNum[now]<<' '<<NumOfCard[now]<<endl; for(int x=0;x<NumOfCard[now];x++){ cout<<card[now][x]<<' '; } cout<<endl; getch();*/ if(!NumOfCard[now]){ now=(now+1)%NumOfPeo; continue; } memset(f,0,sizeof(f)); while(1){ if(f[j][i]){ can=false; break; } else f[j][i]=1; if(i==card[now][j]){ if(i<13) CountNum[now]=i+1; else CountNum[now]=1; last[now]=i; //cout<<"NumOfCard="<<NumOfCard[now]<<endl; --NumOfCard[now]; for(mi=j;mi<NumOfCard[now];mi++) card[now][mi]=card[now][mi+1]; //cout<<"NumOfCard="<<NumOfCard[now]<<endl; if(now<NumOfPeo-1){ now++; card[now][NumOfCard[now]++]=i; //cout<<"ok"<<endl; } else{ now=0; sum--; } break; } i=i+1; if(i>13) i=1; j=(j+1)%NumOfCard[now]; } } printf("Case %d:",k); if(can) for(i=0;i<NumOfPeo;i++){ printf(" %d",last[i]); } else printf(" unwinnable"); printf("\n"); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator