HDU2015校赛 The Magic Tower
题意:两行分别是W和B的生命值,攻击值,防御值。
如果W先,W的攻击值-B的防御值大于零则B生命值减去这么多,然后该B攻击。直到谁的生命值先小与等于零则攻击的人赢。
输出写错了。。。。。
错误代码
1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<stack> 5 #include<queue> 6 #include<vector> 7 #include<map> 8 #include<string.h> 9 #include<algorithm> 10 using namespace std; 11 char c; 12 int w[3],b[3]; 13 14 int main() 15 { 16 while(~scanf("%c",&c)) 17 { 18 for(int i=0; i<3; i++) 19 scanf("%d",&w[i]); 20 for(int i=0; i<3; i++) 21 scanf("%d",&b[i]); 22 if(c=='W') 23 { 24 int ans=w[1]-b[2]; 25 if(ans<=0) 26 { 27 printf("Warrior loses\n"); 28 continue; 29 } 30 while(b[0]>0&&w[0]>0) 31 { 32 ans=w[1]-b[2]; 33 if(ans>0) 34 b[0]-=ans; 35 if(b[0]<=0) 36 { 37 printf("Warrior wins\n"); 38 break; 39 } 40 else 41 { 42 ans=b[1]-w[2]; 43 if(ans<=0) 44 { 45 printf("Warrior wins\n"); 46 break; 47 } 48 w[0]-=ans; 49 if(w[0]<=0) 50 { 51 printf("Warrior loses\n"); 52 break; 53 } 54 } 55 } 56 } 57 else 58 { 59 int ans=b[1]-w[2]; 60 if(ans<=0) 61 { 62 printf("Warrior wins\n"); 63 continue; 64 } 65 while(b[0]>0&&w[0]>0) 66 { 67 ans=b[1]-w[2]; 68 if(ans>0) 69 w[0]-=ans; 70 if(w[0]<=0) 71 { 72 printf("Warrior loses\n"); 73 break; 74 } 75 else 76 { 77 ans=w[1]-b[2]; 78 if(ans<=0) 79 { 80 printf("Warrior loses\n"); 81 break; 82 } 83 b[0]-=ans; 84 if(b[0]<=0) 85 { 86 printf("Warrior wins\n"); 87 break; 88 } 89 } 90 } 91 } 92 } 93 return 0; 94 }
AC代码
1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<stack> 5 #include<queue> 6 #include<vector> 7 #include<map> 8 #include<string.h> 9 #include<algorithm> 10 using namespace std; 11 char c; 12 int w[3],b[3]; 13 14 const int maxn=1e5+7; 15 int main(){ 16 char str[3]; 17 while(~scanf("%s",str)){ 18 int a1,a2,a3,b1,b2,b3; 19 scanf("%d%d%d%d%d%d",&a1,&a2,&a3,&b1,&b2,&b3); 20 if(a2-b3<=0&&b2-a3<=0){ 21 printf("Warrior loses\n"); 22 continue; 23 } 24 if(str[0]=='W'){ 25 int flag=0; 26 while(a1>0&&b1>0){ 27 if(flag==0){ 28 b1-=(a2-b3); 29 flag=1; 30 }else{ 31 a1-=(b2-a3); 32 flag=0; 33 } 34 } 35 if(a1<=0)printf("Warrior loses\n"); 36 else printf("Warrior wins\n"); 37 }else{ 38 int flag=0; 39 while(a1>0&&b1>0){ 40 if(flag==0){ 41 a1-=(b2-a3); 42 flag=1; 43 }else{ 44 b1-=(a2-b3); 45 flag=0; 46 } 47 } 48 if(a1<=0)printf("Warrior loses\n"); 49 else printf("Warrior wins\n"); 50 } 51 } 52 return 0; 53 }