1013.cpp

来自「非常好的C++学习源码,里面包括各种算法的实现,二叉的的前中后序遍历等」· C++ 代码 · 共 75 行

CPP
75
字号
#include<iostream>
#include<cstring>
using namespace std;
char l[3][7],r[3][7],re[3][7],a;

bool inLeft(int i, char x)
{
	return strchr(l[i],x);
}

bool inRight(int i, char x)
{
	return strchr(r[i],x);
}

bool light(char x)
{ 
	int i;
	for(i=0; i<3; i++) 
	{
		switch( re[i][0] )
		{
		case 'u': if(!inRight(i,x))  return false;
			break;
		case 'e': if(inRight(i,x)||inLeft(i,x))  return false;
			break;
		case 'd': if(!inLeft(i,x))  return false;
			break;
		}
	}
	return true;
}

bool heavy(char x)
{ 
	int i;
	for(i=0; i<3; i++) 
	{
		switch( re[i][0] )
		{
		case 'u': if(!inLeft(i,x) )  return false;
			break;
		case 'e': if(inRight(i,x)||inLeft(i,x))  return false;
			break;
		case 'd': if(!inRight(i,x))  return false;
			break;
		}
	}
	return true;
}

int main()
{
	int k,j,n;
	cin>>k;
	for(j=1;j<=k;j++)
	{
		for (n=0;n<3;n++)
			cin>>l[n]>>r[n]>>re[n];
		for (a='A';a<='L';a++)
		{
			if(light(a))
			{
				cout<<a<<" is the counterfeit coin and it is light."<<endl;
				break;
			}
			else if(heavy(a))
			{
				cout<<a<<" is the counterfeit coin and it is heavy."<<endl;
				break;
			}
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?