来自英、法、日、德的甲、乙、丙、丁四位旅客刚好碰在一起。他们除懂本国语言外,每人还会说其他三国语言的一种。有一种语言是三个人都会说的,但没有一种语言四人都懂 ,现知道:
(1)乙不会说英语,当甲与丙交谈时,他却能替他们做翻译
(2)甲是日本人,丁不会说日语,但他俩却能毫无困难地交谈
(3)乙、丙、丁交谈时,找不到共同语言
(4)四个人中,没有一个既能用日语交流同时又能用法语交谈
可见他们所会的语言情况是什么?
这个题用程序应该怎么设计?
(1)乙不会说英语,当甲与丙交谈时,他却能替他们做翻译
(2)甲是日本人,丁不会说日语,但他俩却能毫无困难地交谈
(3)乙、丙、丁交谈时,找不到共同语言
(4)四个人中,没有一个既能用日语交流同时又能用法语交谈
可见他们所会的语言情况是什么?
这个题用程序应该怎么设计?
解决方案 »
- WIN系统资深:WriteLn写出中文乱码
- 急。请教各位了。如何循环读取 查询出的数据到 几个edit控件中
- 如何中途中断程序
- 简单问题,来者有分,关于DataTimePicker控件和查询的问题
- 关于报表调整问题!在线等候!
- 做过IC 卡相关软件的请进,再问 IC 卡的问题!
- 能不能在一台机器上读取另一台机器的串口数据?
- 各位,mis中常用哪一种呢?sdi or mdi?
- 大家知道那有ehlib吗,这是个dbgrid的改良版,可我不止在那下呀?
- 请问哪里有《delphi 5开发人员指南》书下载?我是一个新手,很需要。请各位帮忙!
- 如何隐藏我的form窗体上面的标题栏?
- 进来捡分呀!!!!顶者都有礼送呀~~~~~~~~~,
using namespace std;const char str[2][4][10] = {{"日本人", "英国人", "法国人", "德国人"},
{"日语", "英语", "法语", "德语"}};
int Person[4][2];bool Check()
{
//条件1
if( Person[1][0] == 1 || Person[1][1] == 1 )
return false;
if( (Person[1][0] != Person[0][1] &&
Person[1][1] != Person[0][0] &&
Person[1][1] != Person[0][1]) ||
(Person[1][0] != Person[2][1] &&
Person[1][1] != Person[2][0] &&
Person[1][1] != Person[2][1])
) return false;
//甲丙不能直接交谈?
if( Person[2][0] == Person[0][1] ||
Person[2][1] == Person[0][0] ||
Person[2][1] == Person[0][1])
return false;
//条件2
if( (Person[0][0] != Person[3][1] &&
Person[0][1] != Person[3][0] &&
Person[0][1] != Person[3][1]) ||
(Person[3][0] == 0 || Person[3][1] == 0)
) return false; //条件3
for(int l = 0; l < 4; l++)
{
if( (Person[1][0] == l || Person[1][1] == l) &&
(Person[2][0] == l || Person[2][1] == l) &&
(Person[3][0] == l || Person[3][1] == l) )
return false;
} //条件4
for(int p = 0; p < 4; p++)
{
if( (Person[p][0] == 0 && Person[p][1] == 2) ||
(Person[p][0] == 2 && Person[p][1] == 0) )
return false;
}
for(int i = 0; i < 4; i++)
{
cout << str[0][Person[i][0]] << ':' << str[1][Person[i][1]] << '\t';
}
cout << endl;
return true;
}void SetForeignLanguage(int n)
{
if( n == 4 )
{
Check();
}
else
{
for(int l = 0; l < 4; l++)
{
if( l == Person[n][0] ) continue;
Person[n][1] = l;
SetForeignLanguage( n + 1 );
}
}
}void SetCountry(int n)
{
if( n == 4 )
{
SetForeignLanguage( 0 );
}
else
{
for(int c = 1; c < 4; c++)
{
int i = 0;
for( ;i < n; i++)
{
if( c == Person[i][0] ) break;
}
if( i == n )
{
Person[n][0] = c;
SetCountry( n + 1 );
}
}
}
}int main(int argc, char* argv[])
{
Person[0][0] = 0; SetCountry( 1 );
system( "pause" );
return 0;
}