《挑战程序设计》第一章第一题

来源:互联网 发布:数据总线宽度 编辑:程序博客网 时间:2024/05/18 00:50

  一直在纠结用什么编辑器来搞算法,先是用C++,后来又换回Java。用Java写了一段时间,我发现Java并不适合搞算法,理由不是因为它慢(注:Java现在并不比c/c++慢多少,二者的运行速度基本上可以忽略了),而是因为它的“纯面向对象”性让人的思维难以集中在算法这个层面上,所以现在又决定重回C++了。
  万事开头难,只要开个好头,然后坚持下去,就一定会成功的。所以我还是决定从基本开始搞起,于是就买了一本《挑战程序设计》。

  3n+1这个题思路很简单,对于任意的一个数k,按照题目给定的方式去生成对应的序列,同时统计这个序列的长度即可。但是这个题的陷阱在于:输入并没有说明i<=j,所以需要考虑i > j时的情况。这是我贡献了一次WA的原因。
   献上我的代码:

#include <algorithm>#include <stdio.h>#include <iostream>using namespace std;int main() {    int i, j;    while(scanf("%d %d", &i, &j) != EOF) {        int res = 1;        int m = max(i, j);        int n = min(i, j);        for(int l = n; l <= m; l++) {            int k = l;            int cnt = 1;            while(k != 1) {                if(k%2) {                    k = k*3 + 1;                }                else {                    k /= 2;                }                cnt++;            }            res = max(cnt, res);        }        printf("%d %d %d\n", i, j, res);    }}
0 0
原创粉丝点击