标签:span 问题 ble 硬币 include can else 有一个 并且
1.链接地址
https://vjudge.net/problem/POJ-1013#author=linjiale
2.问题描述
思远宝宝有一打银币( 一打有几个你知道么)。然而,其中有一个是伪造的(不知道是偏重还是偏轻),现在思远有三次机会进行天平称重,并且保证三次后有解,请你找出伪造银币并告诉我是偏重还是偏轻。
输入样例
1 EFGH ABCD even EFGI ABCI even ABEF CDFK up
输出样例
K is the counterfeit coin and it is light.
3.解题思路
如果是平衡 那么比较中的硬币都是真的
如果不平衡,那么所有的硬币都可能要怀疑 如果重那么+1 如果轻-1 , 最后统计怀疑的程度。
4.算法实现源代码
#include<stdio.h> #include<math.h> #include<memory.h> int main() { int t,i,j,k,max; char ans; scanf("%d",&t); for(i=0;i<t;i++) { char l[3][6],r[3][6],w[3][6]; int time[‘L‘+1],flag[‘L‘+1]; memset(time,0,sizeof(time)); memset(flag,0,sizeof(flag)); for(j=0;j<3;j++) { scanf("%s %s %s",l[j],r[j],w[j]); } for(j=0;j<3;j++) { switch(w[j][0]) { case ‘u‘: { for(k=0;l[j][k];k++) { time[ l[j][k] ]++; time[ r[j][k] ]--; } break; } case ‘d‘: { for(k=0;l[j][k];k++) { time[ l[j][k] ]--; time[ r[j][k] ]++; } break; } case ‘e‘: { for(k=0;l[j][k];k++) { flag[ l[j][k] ]=1; flag[ r[j][k] ]=1; } break; } } } max=0; for(j=‘A‘;j<=‘L‘;j++) { if(flag[j]) continue; else if(max<=abs(time[j])) { max=abs(time[j]); ans=j; } } if(time[ans]>0) printf("%c is the counterfeit coin and it is heavy.\n",ans); else printf("%c is the counterfeit coin and it is light.\n",ans); } return 0; }
标签:span 问题 ble 硬币 include can else 有一个 并且
原文地址:https://www.cnblogs.com/KasenBob/p/11213367.html