Poj 1013

大致思路就是将12个硬币标记为0,分别判断每一行,若左边重则给左边相应硬币+1,右边-1,even时标记为100,表示已确认为真币

最后判断哪个硬币的绝对值最大则嫌疑最大,标记为负值表示较轻,正值表示较重

算是一个水题吧……我竟然还错了几次……

 1 #include<iostream>
 2 #include<string>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 
 7 int coin[12]={0};
 8 
 9 int main(){
10     int n;
11     int l,r;
12     string s;
13     int maxx;
14     int number;
15     cin>>n;
16     while(n--){
17         memset(coin,0,sizeof(coin));
18         int Left[6]={1};
19         int Right[6]={1};
20         for(int j=0;j<3;j++){
21             cin>>s;
22             l=s.size();
23             for(int i=0;i<l;i++){
24                 Left[i]=s[i]-65;
25             }
26             cin>>s;
27             r=s.size();
28             for(int i=0;i<r;i++){
29                 Right[i]=s[i]-65;
30             }
31             cin>>s;
32             if("even"==s){
33                 for(int i=0;i<l;i++){
34                     coin[Left[i]]=100;
35                 }
36                 for(int i=0;i<r;i++){
37                     coin[Right[i]]=100;
38                 }
39             }
40             if("up"==s){
41                 for(int i=0;i<l;i++){
42                     if(coin[Left[i]]!=100){
43                         coin[Left[i]]++;
44                     }
45                 }
46                 for(int i=0;i<r;i++){
47                     if(coin[Right[i]]!=100){
48                         coin[Right[i]]--;
49                     }
50                 }
51             }
52             if("down"==s){
53                 for(int i=0;i<l;i++){
54                     if(coin[Left[i]]!=100){
55                         coin[Left[i]]--;
56                     }
57                 }
58                 for(int i=0;i<r;i++){
59                     if(coin[Right[i]]!=100){
60                         coin[Right[i]]++;
61                     }
62                 }
63             }
64         }
65         maxx=0;
66         for(int i=0;i<12;i++){
67             if(coin[i]!=100){
68                 if(maxx<fabs(coin[i])){
69                     maxx=fabs(coin[i]);
70                     number=i;
71                 }    
72             }
73         }
74         if(coin[number]>0){
75             cout<<char(65+number)<<" is the counterfeit coin and it is heavy."<<endl;
76         }
77         else{
78             cout<<char(65+number)<<" is the counterfeit coin and it is light."<<endl;
79         }
80     }
81 }

 

posted @ 2017-03-02 22:05  水野玛琳  阅读(186)  评论(0编辑  收藏  举报