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 |
请问这题怎么debug (附代码)数据量如此之大 没有解题报告 没有正确代码 。。。。。 错了我也不知道怎么改: 唉 先把我的代码放这边来 #include <vector> #include <string> #include <iostream> using namespace std; class card { public: char suit;//D H S C char rank;// A 2 3 4 5 6 7 8 9 T J Q K // char llsuit; 犹豫移牌之后 这四个域的修改太多 所以先删去 // char llrank; // char lsuit; // char lrank; int matchll; int matchl; int total; }; void update(vector<card> & cards,int i){ if(i>0){ if(cards[i].rank==cards[i-1].rank || cards[i].suit == cards[i-1].suit) cards[i].matchl = 1; else cards[i].matchl = 0; } else{ cards[i].matchl = 0; } if(i>2){ if(cards[i].rank==cards[i-3].rank || cards[i].suit == cards[i-3].suit) cards[i].matchll = 1; else cards[i].matchll = 0; } else{ cards[i].matchll = 0; } } void updatel(vector<card> & cards,int i){ if(i>0){ if(cards[i].rank==cards[i-1].rank || cards[i].suit == cards[i-1].suit) cards[i].matchl = 1; else cards[i].matchl = 0; } else{ cards[i].matchl = 0; } } void updatell(vector<card> & cards,int i){ if(i>2){ if(cards[i].rank==cards[i-3].rank || cards[i].suit == cards[i-3].suit) cards[i].matchll = 1; else cards[i].matchll = 0; } else{ cards[i].matchll = 0; } } int main(int argc, char* argv[]) { int i; vector <card> cards(52); string str; while(1){ for(i=0;i<52;i++){ cin >> str; if(str=="#") return 0; cards[i].rank = str[0]; cards[i].suit = str[1]; cards[i].total = 1; if(i>0){ if(cards[i].rank==cards[i-1].rank || cards[i].suit == cards[i-1].suit) cards[i].matchl = 1; else cards[i].matchl = 0; } else{ cards[i].matchl = 0; } if(i>2){ if(cards[i].rank==cards[i-3].rank || cards[i].suit == cards[i-3].suit) cards[i].matchll = 1; else cards[i].matchll = 0; } else{ cards[i].matchll = 0; } } // cout << cards[0].lsuit << " " <<cards[0].lrank<< " "<< cards[0].matchl<< endl; i = 0; while(i<cards.size()){ if(cards[i].matchll==1){ cards[i-3].suit = cards[i].suit; cards[i-3].rank = cards[i].rank; cards[i-3].total = cards[i-3].total + cards[i].total; //重新计算i-3的matchl和matchll update(cards,i-3); cards.erase(&cards[i]); updatel(cards,i-2); update(cards,i); updatell(cards,i+1); updatell(cards,i+2); i=i-3; continue; } if(cards[i].matchl==1){ cards[i-1].suit = cards[i].suit; cards[i-1].rank = cards[i].rank; cards[i-1].total = cards[i-1].total+cards[i].total; update(cards,i-1); cards.erase(&cards[i]); updatell(cards,i); updatell(cards,i+1); i = i -1; i=0; continue; } i++; /* for debug 用来显示每张牌 sigh int j; for(j=0;j<cards.size();j++) cout << cards[j].rank << cards[j].suit << cards[j].total << " "; cout <<endl<< "***************************************** "<<endl << endl; */ } cout << cards.size() <<" piles remaining:" ; for (i=0;i<cards.size();i++){ cout << " " <<cards[i].total; } cout << endl; } system("PAUSE"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator