5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A

问题:
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

第一种方法:

#include 

void MatchSport()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	int e = 0;
	for (a = 1;a <= 5; a++)
	{
		for(b = 1; b <= 5 ; b++)
		{
			for(c = 1; c <= 5 ; c++)
			{
				for(d = 1; d <= 5 ; d++)
				{
					for(e = 1; e <= 5 ; e++)
					{
						if (((b == 2) && (a != 3) || (b != 2) && (a == 3))
							&& ((b == 2) && (e != 4) || (b != 2) && (e == 4))
							&& ((c == 1) && (d != 2) || (c != 1) && (d == 2))
							&& ((c == 5) && (d != 3) || (c != 5) && (d == 3))
							&& ((e == 4) && (a != 1) || (e != 4) && (a == 1))
							)
						{
							if ((a != b ) && (a != c) && (a != d) && (a != e)
								&& (b != c) && (b != d) && (b != e) && (c != d) 
								&& (c != e) && (d != e))
							printf("A = %d B = %d C = %d D = %d E = %d\n",a, b, c, d, e);
						}
					}
				}
			}
		}
	}
}

int main ()
{
	MatchSport();
	return 0;
}

第二种方法:

#include

void MatchSport()
{
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    for(a = 1;a <= 5;a++)
        for(b = 1;b <= 5;b++)
            for(c = 1;c <= 5;c++)
                for(d = 1;d <= 5;d++)
                    for(e = 1;e <= 5;e++)
                    {
                        if (((b == 2) + (a == 3) == 1 && 
                            (b == 2) + (e == 4) == 1 && 
                            (c == 1) + (d == 2) == 1 && 
                            (c == 5) + (d == 3) == 1 && 
                            (e == 4) + (a == 1) == 1)==1)

                            if(120 == a*b*c*d*e)//五人名次不同,即相乘为定值120来筛选重复名次
                            {
                                printf("A=%d  B=%d  C:%d  D:%d  E:%d\n", a, b, c, d, e);
                            }
                    }
}
int main()
{
    MatchSport();
    return 0;
}

第一种方法和第二种方法大同小异,但第二种方法比第一种方法在代码上简略不少。
最终结果:
在这里插入图片描述

你可能感兴趣的:(5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A)