• C语言经典算法100例-022-乒乓球比赛名单问题


    我们来看题:

    两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 

    1.分析,如果没有任何规矩可言,那么a可以跟x,y,z中的任何一个比,而b,c同样是,但是规矩是有的,那就是a,b,c不能和相同的对手比赛。所以,方法就是,三层循环,然后用条件语句层层筛选,打印出来满足需求的匹配。

    2.源程序:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i,j,k;  //i,j,k分别对应a,b,c的对手
        for(i='x';i<='z';i++)
            for(j='x';j<='z';j++)
                if(j!=i)
                    for(k='x';k<'z';k++)
                        if(k!=i&&k!=j)
                            if(i!='x'&&k!='x'&&k!='z')
                                printf("a-%c b-%c c-%c",i,j,k);
        return 0;
    }
    

    刚开始看到这个题,我想得很复杂也没想到好的办法,后来看了答案才豁然开朗,只需要3个变量就可以了,因为a,b,c的位置是确定的,而且x,y,z可以转化为对应的整数,直接放到循环里就可以了。脑子好迟钝,学如逆水行舟,不进则退啊。

       

  • 相关阅读:
    Cygwin配置总结
    javap 指令集
    超好用的Vim配置
    超过 130 个你需要了解的 vim 命令
    21、面向对象
    20、MySQLdb
    深入java字符串原理及其效率分析
    数据库执行计划
    SQL中EXISTS的用法
    mybatis之foreach用法
  • 原文地址:https://www.cnblogs.com/mrbourne/p/9959502.html
Copyright © 2020-2023  润新知