• UVA 100 3n+1


    以下是UVA 100题的解析与答案

    (所谓解析,就是能让别人不看代码也能想出代码的样子。所谓答案,就是即使不执行程序,也能看出正确的结果)

    100 - The 3n + 1 problem

    解析:这题对于初学者来说是比较难的,对于有一定经验的Acmer来说更难。

       前者因为这题需要考虑两个关键点:i,j的大小顺序和变量合理初始化。

       后者因为这题需要考虑是否会超时,很难实现题目要求的范围。

       (本人电脑上运行不起,绝对超时,在UVA上只用了0.4秒~~~~)

     1 #include <iostream>            //UVAOJ没有iostream.h文件
     2 #include <string>            
     3 using namespace std;        
     4 int main()                    //标准格式
     5 {
     6     //真正好的编程风格,是能让看到的人相信这个程序是完美至极的。    
     7     int i,j;
     8     while(cin>>i>>j){        //等同于while(scanf("%d %d",&i,&j)!=EOF)
     9         int n,m,max=0;        
    10         i<j?(n=i,m=j):(n=j,m=i);
    11         m/2>n?(n=m/2):0;        //简单剪枝
    12         int x,y;
    13         for(x=n;x<=m;x++){
    14             y=x;
    15             int tmp=1;
    16             while(y!=1){
    17                 if(y%2)            //省略了一次运算
    18                     y=y*3+1;
    19                 else
    20                     y=y>>1;        //高效运算
    21                 tmp++;
    22             }
    23             if(tmp>max)
    24                 max=tmp;
    25         }
    26         cout<<i<<' '<<j<<' '<<max<<endl;
    27     }
    28     return 0;
    29 } 

    注意,本文没有结束!

    C++是C语言的超集,虽然我只学了2个小时的C++,学会了几个单词,对象和类的概念,还有怎么在VC6.0上运行程序。

    好像某些职校在大一就安排C++课程,好像很少有人能够用C++AC这题吧。

    这是ACM的强大力量,如果把编程分为两类的话,一类是软件开放,它是真正能赚钱的行业,但是现在我们都做不到。另一类是ACM题,以简约的形式考察编程能力,却需要不输于开放大型软件能力,如果仅仅把ACM看成是对算法的提升,那就太浪费了!

    ACM对Acmer有以下作用:

    培养团队协作能力;

    培养吃苦耐劳的意志;

    培养学习能力;

    提升英语水平;

    提升专业英语水平;

    提升思维能力与敏锐的判断力;

    提升编程水准、编程素养、算法能力;

    提升调试代码、测试代码、程序分析的能力;

    提升撰写文档的能力,比如我现在做的;

    提升阅读代码的能力,比如你刚才做到;

    综上所述,ACM除了对你如何记忆马克斯主义没有作用外,都对你有极大的提升。

    必然,一个获奖的Acmer——一个充分得到提升的Acmer,会得到谷歌、百度等公司的应聘!

     

  • 相关阅读:
    解决Eclipse中“诡异”的错误:找不到或无法加载主类
    eclipse 中的注释 快捷键 多行注释快捷键 单行注释快捷键
    将Eclipse设置为黑色主题
    Javac提示不是内部或外部命令
    js粒子旋涡
    canvas黑客帝国代码雨特效 | jQuery特效|手机微信网站特效| 网页特效库
    python笔记--冒泡排序升级版
    MySQL5.7(二)数据库的基本操作
    Linux命令应用大词典-第1章 登录、退出、关机和重启
    第1章 Linux命令行简介
  • 原文地址:https://www.cnblogs.com/bmdx/p/say_of_acmer.html
Copyright © 2020-2023  润新知