题目:两个网球队进行比赛,天网队出战成员为A、B、C、D、E、F,魔球队出战成员为U、V、W、X、Y、Z。依照习惯,魔球队出战顺序为U、V、W、X、Y、Z。根据以往比赛实战,A一般打不过W,B可以打过X,C打不过X,D可以打过W,E可以打过U但打不过Z。假如你是天球队的领队,请问如何安排对战组合为最优方案?
#include<stdio.h>
int main(void)
{
char a;
char b;
char c;
char d;
char e;
char f;
for(a='U';a<'Z'+1;a++)
{
for(b='U';b<'Z'+1;b++)
{
for(c='U';c<'Z'+1;c++)
{
for(d='U';d<'Z'+1;d++)
{
for(e='U';e<'Z'+1;e++)
{
for(f='U';f<'Z'+1;f++)
{
if(a!=b && a!=c && a!=d && a!=e && a!=f)
if(b!=c && b!=d && b!=e && b!=f)
if(c!=d && c!=e && c!=f)
if(d!=e && d!=f)
if(e!=f)
if(a!='W' && b=='X' && c!='X' && d=='W' && e=='U')
{
printf("A vs %c\nB vs %c\nC vs %c\nD vs %c\nE vs %c\nF vs %c\n\n",a,b,c,d,e,f);
}
}
}
}
}
}
}
return 0;
}
自然这是一种思维最简单的形式,程序运算次数比较多,可以通过剪枝的形式减少运算。