zoukankan      html  css  js  c++  java
  • 韩信点兵

    #include <stdio.h>
    #include <math.h>
    // 算法竞赛的目标是编程对任意输入均得到正确的结果。
    // 请先独立完成,如果有困难可以翻阅本书代码仓库中的答案,但一定要再次独立完成。
    // “抓住主要矛盾”——始终把学习、实验的焦点集中在最有趣的部分。如果直观地解决方案行得通,就不必追究其背后的原理。
    
    /**
    【题目】韩信点兵(hanxin)
    相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人
    一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入包含多组
    数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<
    7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。输入到文件
    结束为止。
    样例输入:
    2 1 6
    2 1 3
    样例输出:
    Case 1: 41
    Case 2: No answer
    */
    
    
    /**
    【分析】定义总数n,循环处理,n>=10,n<100。只要有第一个值,就输出。
    */
    
    
    int main()
    {
        int n;
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
    
        for (n=10;n<100;n++) {
            if ((n%3==a) && (n%5==b) && (n%7==c)) {
                printf("%d
    ",n);
                break; // 跳出当前最近的循环,对你这个例子来说就是跳出for
            }
        }
    
        if (n==100) {
            printf("No answer
    ");
        }
    
        return 0;
    }
    
    
    

    点评:有时候思路很重要,思路来了,代码就快了。用计算机的思维去解决问题,不是韩信的思维。

    增加多组数据处理。

    #include <stdio.h>
    #include <math.h>
    // 算法竞赛的目标是编程对任意输入均得到正确的结果。
    // 请先独立完成,如果有困难可以翻阅本书代码仓库中的答案,但一定要再次独立完成。
    // “抓住主要矛盾”——始终把学习、实验的焦点集中在最有趣的部分。如果直观地解决方案行得通,就不必追究其背后的原理。
    
    /**
    【题目】韩信点兵(hanxin)
    相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人
    一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入包含多组
    数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<
    7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。输入到文件
    结束为止。
    样例输入:
    2 1 6
    2 1 3
    样例输出:
    Case 1: 41
    Case 2: No answer
    */
    
    
    /**
    【分析】定义总数n,循环处理,n>=10,n<100。只要有第一个值,就输出。
    */
    
    int main()
    {
        int n;
        int a,b,c;
    
        while (scanf("%d%d%d",&a,&b,&c) != EOF) { // 多组数据输入处理,Linux中,在新的一行的开头,按下Ctrl-D,就代表EOF(如果在一行的中间按下Ctrl-D,则表示输出"标准输入"的缓存区,所以这时必须按两次Ctrl-D);Windows中,Ctrl-Z表示EOF。
            for (n=10;n<100;n++) {
                if ((n%3==a) && (n%5==b) && (n%7==c)) {
                    printf("%d
    ",n);
                    break; // 跳出当前最近的循环,对你这个例子来说就是跳出for
                }
            }
    
            if (n==100) {
                printf("No answer
    ");
            }
        }
    
        return 0;
    }
    
    
    

  • 相关阅读:
    【276】◀▶ Python 字符串函数说明
    Spring事务配置的五种方式 巨全!不看后悔,一看必懂!
    Android Developers:两个视图渐变
    《Linux命令行与shell脚本编程大全》 第二十七章 学习笔记
    Android的TextView与Html相结合的用法
    嵌入式C语言优化小技巧
    vxworks获取系统时间编程
    【算法与数据结构】在n个数中取第k大的数(基础篇)
    字符集转换 字符类型转换 utf-8 gb2312 url
    java 从零开始,学习笔记之基础入门<Oracle_基础>(三十三)
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/8533519.html
Copyright © 2011-2022 走看看