| ||||||||||
| 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 | |||||||||
Re:枚举每一个coin,如果不是false即为true,一定看得懂In Reply To:枚举每一个coin,如果不是false即为true,一定看得懂 Posted by:unshakable at 2017-03-28 22:10:46 > #include <iostream>
> #include <cstring>
> using namespace std;
>
> char Left[3][7];
> char Right[3][7];
> char Result[3][5];
>
> //true == light false == heavy
> bool isCounterfeit(char c, bool weight)
> {
> for (int i = 0; i < 3; i++)
> switch (Result[i][0]) {
> case 'e':
> if (strchr(Left[i], c) || strchr(Right[i], c)) return false; break;
> case 'u': //the right side is light
> if (weight) { //light coin
> if (strchr(Right[i], c) == NULL) return false; //in the right side of the balance
> }
> else { //heavy coin
> if (strchr(Left[i], c) == NULL) return false; //in the left side of the balance
> }
> break;
> case 'd': //the right side is heavy
> if (weight) { //light coin
> if (strchr(Left[i], c) == NULL) return false; //in the left side of the balance
> }
> else { //heavy coin
> if (strchr(Right[i], c) == NULL) return false; //in the right side of the balance
> }
> break;
> }
> return true;
> }
>
> int main()
> {
> int n;
> cin >> n;
> while (n--) {
> for (int i = 0; i < 3; i++)
> cin >> Left[i] >> Right[i] >> Result[i];
> for (char c = 'A'; c <= 'L'; c++) {
> if (isCounterfeit(c, true)) {
> cout << c << " is the counterfeit coin and it is light." << endl;
> break;
> }
> if (isCounterfeit(c, false)) {
> cout << c << " is the counterfeit coin and it is heavy." << endl;
> break;
> }
> }
> }
>
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator