海贼19-8班现场课
9262人加入学习
(1人评价)
C语言程序设计(海贼现场课)
价格 ¥ 600.00
该课程属于 海贼19-8班(C++高薪班) 请加入后再学习
#include #include typedef int64_t int1; int1 Triangle(int1 n) { return n * (n + 1) / 2; } int1 Pentagonal(int1 n) { return n * (3 * n - 1) / 2; } int1 Hexagonal(int1 n) { return n * (2 * n - 1); } int1 binarySearch(int1 (*func)(int1), int1 x) { int1 head = 1, tail = x, mid; while (head <= tail) { mid = (head + tail) >> 1; if (func(mid) == x) return mid; if (func(mid) < x) head = mid + 1; else tail = mid - 1; } return -1; } // Euler 45题题解 int1 main() { int n = 286; for(;; n++) { if(binarySearch(Hexagonal, Triangle(n)) == -1) continue; if(binarySearch(Pentagonal, Triangle(n)) == -1) continue; printf("%" PRId64 "\n", Triangle(n)); break; } return 0; }
[展开全文]

总结

如果不满足什么条件,就直接看下一个n,可以用《if... continue;》这样一种有趣的写法,称为对偶缩进;

它相对于《if...else...》 少写一个判断语句;

例如写一些特定序列的遍历算法(二分查找,三分查找及其他遍历方式),用函数指针会非常方便。

相当于定义了一个函数:算法名称(特定的函数序列,查找范围值)

 

int main() {

    int n = 286; 

    for ( ; ; n++) {

        if (binary_search(Hexagonal, Triangle(n) == -1)) continue;

//对偶缩进的写法

//“当35行成立的时候”,“当xx行成立的时候”这种表达,利于分析代码;

        if (binary_search(Pentagonal, Triangle(n) == -1)) continue;

        printf("%d\n", Triangle(n));

        break;

    }

    return 0;

}

[展开全文]

授课教师

C++算法工程师
高级算法研发工程师

课程特色

文档(9)
视频(50)
图文(22)
下载资料(3)