正文

[042] 比赛对手2006-03-19 16:50:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wentao/11170.html

分享到:

<谭> 6.15 两个乒乓球队进行比赛, 各出三人。甲队为A、B、C三人,乙队为X、Y、Z三人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比。请编程序找出三赛手的名单。分析:① X既不与A比,又不与C比,必然与B比;② C既不与X比,又不与Z比,必然与Y比;③ A只能与Z比.以上为逻辑推理得到结论,而用计算机处理此问题,必须对所有组合一一检验,看是否符合条件。#include <stdio.h>int   main(){    char _A, _B, _C; /* 分别表示A,B,C的对手 */    for(_A = 'X'; _A <= 'Z'; _A++)        for(_B = 'X'; _B <= 'Z'; _B++)            for(_C = 'X'; _C <= 'Z'; _C++)                if(_A != _B && _A != _C && _B != _C && _A != 'X' && _C != 'X' && _C != 'Z')                    printf("A--%c\tB--%c\tC--%c\n", _A, _B, _C);    return 0;}运行结果:==============================A--Z    B--X    C--Y==============================★ 这里为了在运行时能直接打印出字符'X'、'Y'、'Z',  用了字符变量_A,_B,_C 。另外为了减少循环次数,可由外层到内层去除不符合的组合。书中例子如下:#include <stdio.h>int   main(){    char i, j, k; /* 分别表示A,B,C的对手 */    for(i = 'X'; i <= 'Z'; i++)        for(j = 'X'; j <= 'Z'; j++)            if (i != j)                for(k = 'X'; k <= 'Z'; k++)                     if (i != k && j != k)                        if(i != 'X' && k != 'X' && k != 'Z')                            printf("A--%c\tB--%c\tC--%c\n", i, j, k);    return 0;}运行结果同上。★ 考查两个程序循环次数的差异,做如下验证:#include <stdio.h>int   main(){    char _A, _B, _C, count = 0;    for(_A = 'X'; _A <= 'Z'; _A++)        for(_B = 'X'; _B <= 'Z'; _B++)            for(_C = 'X'; _C <= 'Z'; _C++)                count++;    printf("count=%d\n", count);    return 0;}运行结果:======================count=27======================#include <stdio.h>int   main(){    char i, j, k, count = 0;    for(i = 'X'; i <= 'Z'; i++)        for(j = 'X'; j <= 'Z'; j++)            if (i != j)                for(k = 'X'; k <= 'Z'; k++)                    if (i != k && j != k)                        count++;    printf("count=%d\n", count);    return 0;}运行结果:======================count=6====================== ★ 可见后者循环次数比前者少的多。

阅读(2977) | 评论(4)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册