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 |
没说两边一定是4枚硬币呀,只说数目相等In Reply To:高手们指点一下吧!为什么wa Posted by:C0400203025 at 2004-02-20 14:42:39 > 算法:硬币状态 -1:light, 0:normal, 1: heavy. > 天平状态 -1:down, 0: even, 1: heavy. > 枚举24中可能。 > 利用 ((coinStatus[input[0][1]] + coinStatus[input[0][2]] + coinStatus[input[0][3]]+ coinStatus[input[0][4]] - coinStatus[input[0][5]] - coinStatus[input[0][6]] - coinStatus[input[0][7]]-coinStatus[input[0][8]] == input[0][0]) 这种方法判断枚举是否正确。 > > #include<iostream> > using namespace std; > > void main() { > char line1[5] = {'0'}; > char line2[5] = {'0'}; > char line3[5] = {'0'}; > int input[3][9]; > int coinStatus[12] = { 0 }; > int nn = 0; > cin >> nn; > while (nn--){ > for(int i = 0; i < 3; i++) { > cin >> line1 >> line2 >> line3; > for(int j = 1; j < 5; j++) { input[i][j] = line1[j-1] - 65;} > for(int k = 1; k < 5; k++) { input[i][k+4] = line2[k-1] - 65;} > switch (*line3) { > case 'e' : input[i][0] = 0; break; > case 'd' : input[i][0] = -1; break; > case 'u' : input[i][0] = 1; break; > default: ; > } > } > int index = 0; > for(index = 0; index < 12; index ++) { > coinStatus[index] = 1; > if((coinStatus[input[0][1]]+coinStatus[input[0][2]]+coinStatus[input[0][3]]+coinStatus[input[0][4]] > -coinStatus[input[0][5]]-coinStatus[input[0][6]]-coinStatus[input[0][7]]-coinStatus[input[0][8]] > == input[0][0]) && (coinStatus[input[1][1]]+coinStatus[input[1][2]]+coinStatus[input[1][3]]+coinStatus[input[1][4]] > -coinStatus[input[1][5]]-coinStatus[input[1][6]]-coinStatus[input[1][7]]-coinStatus[input[1][8]] > == input[1][0]) && (coinStatus[input[2][1]]+coinStatus[input[2][2]]+coinStatus[input[2][3]]+coinStatus[input[2][4]] > -coinStatus[input[2][5]]-coinStatus[input[2][6]]-coinStatus[input[2][7]]-coinStatus[input[2][8]] > == input[2][0])) cout << (char)(index + 65) << " is the counterfeit coin and it is heavy. " << endl; > coinStatus[index] = -1; > if((coinStatus[input[0][1]]+coinStatus[input[0][2]]+coinStatus[input[0][3]]+coinStatus[input[0][4]] > -coinStatus[input[0][5]]-coinStatus[input[0][6]]-coinStatus[input[0][7]]-coinStatus[input[0][8]] > == input[0][0]) && (coinStatus[input[1][1]]+coinStatus[input[1][2]]+coinStatus[input[1][3]]+coinStatus[input[1][4]] > -coinStatus[input[1][5]]-coinStatus[input[1][6]]-coinStatus[input[1][7]]-coinStatus[input[1][8]] > == input[1][0]) && (coinStatus[input[2][1]]+coinStatus[input[2][2]]+coinStatus[input[2][3]]+coinStatus[input[2][4]] > -coinStatus[input[2][5]]-coinStatus[input[2][6]]-coinStatus[input[2][7]]-coinStatus[input[2][8]] > == input[2][0])) cout << (char)(index + 65) << " is the counterfeit coin and it is light. " << endl; > coinStatus[index] = 0; > } > } > } > > > > Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator