poj1013 Counterfeit Dollar 称硬币

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

bool ok(char p[3][3][10],int w,char ch)    //数组做形参 ,w表示轻重,ch为枚举的那枚硬币 
{
	int i,j,lw,rw;    //lw为左边的重量,rw为右边的 
	for(i=0;i<3;i++)
	{
		lw=0; rw=0;   //初值一定要在此处赋! 
		for(j=0;j<strlen(p[i][0]);j++) 
		  if(p[i][0][j]==ch) lw=w;    //处理左边  
		for(j=0;j<strlen(p[i][1]);j++) 
		  if(p[i][1][j]==ch) rw=w;    //处理右边 
		if((p[i][2][0]=='e'&&lw==rw)||(p[i][2][0]=='u'&&lw>rw)||(p[i][2][0]=='d'&&lw<rw)) continue;
		else return false;    //判断是否可行 
	}
	return true;
}
int main()
{
	char f[3][3][10];    //储存读入数据 
	int i,j,weight,cas,z;
	cin>>cas;
	for(z=0;z<cas;z++)
	{
	  for(i=0;i<3;i++)
	    for(j=0;j<3;j++) 
	    { 
	       cin>>f[i][j];
	       if(f[i][j]==" ") j--;  //空格字符会影响读入,如为空格,此次读入作废 
	    }
	    for(i=0;i<12;i++)
	      for(weight=-1;weight<=1;weight+=2)   //wight,-1为轻,1为重 
	        if(ok(f,weight,char('A'+i)))
	        {
	         	cout<<char('A'+i)<<" is the counterfeit coin and it is ";
	        	if(weight<0) cout<<"light."<<endl;
	        	else cout<<"heavy."<<endl;
	        	break;
	        }
	}
   return 0;	
} 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值