| ||||||||||
| 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:为便于理解,给组反例,详见内.In Reply To:为便于理解,给组反例,详见内. Posted by:ferret_chao at 2005-10-12 12:28:54 感谢ferret
用暴力做出来了
//------------------------------------------
#include <iostream>
#include <algorithm>
using namespace std;
char coinleft[3][12];
char coinright[3][12];
int coin[12];
int len[3];
int leftw,rightw;
int state[3];//0为平衡 -1为up 1为down
int main()
{
int i,j,k,l,t;
int casenum;
char input[3][1024];
// freopen("1013.txt", "r", stdin);
scanf("%d ",&casenum);
for(i=0;i<casenum;i++)//每次范例
{
//读取输入
for(l=0;l<3;l++)
{
//initialize
len[l] = 0;
state[l] = 0;
gets(input[l]);
for(k=0;;)
{
len[l] = 0;
for(;isalpha(input[l][k]);k++)//天平左边
{
coinleft[l][len[l]] = input[l][k];
len[l]++;
}
while(isspace(input[l][k]))
{
k++;//跳过空格
}
len[l] = 0;
for(;isalpha(input[l][k]);k++)//天平右边
{
coinright[l][len[l]] = input[l][k];
len[l]++;
}
while(isspace(input[l][k]))
{
k++;//跳过空格
}
if(input[l][k] == 'e')
state[l]=0;//even
else if (input[l][k] == 'u')
state[l]=-1;//up
else
state[l]=1;//down
break;
}
}
char Weight[3][10]={"light","","heavy"};
//暴力代入破解
for(j=0;j<12;j++)//假设第j枚为假币
{
for(k=-1;k<=1;k=k+2)//两种情况 该假币轻 为-1 重 为1 其他的为0
{
for(t=0;t<12;t++)
coin[t] = 0;
coin[j] = k;
for(l=0;l<3;l++)//三个平衡式各自判断
{
leftw = 0;
rightw = 0;
for(t=0;t<len[l];t++)
{
leftw += coin [coinleft[l][t]-'A'];
rightw += coin [coinright[l][t]-'A'];
}
if((rightw -leftw) != state[l] )//有一个等式不符合了 跳出 其他等式不必计算
//否则 继续验证 直到三个都满足
{
break;
}
}
if((rightw -leftw) == state[l-1] && l==3 ) //是三个等式都满足的跳出 还是错误的跳出?
////能走到这里 说明三个等式都符合
{
printf("%c is the counterfeit coin and it is %s.\n",'A'+j,Weight[k+1]);
goto nexttest;//下一个范例
}
}// 轻重循环
}
nexttest:
;
}//end of for(i=0;i<casenum;i++)
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator