组长说应付蓝桥杯这一本书就够了,这几天看搜索还有贪心,真的是看题目一个都不会啊,然后看别人的代码还看不大懂。。哎,所以还是好好的学习吧。
这几天在博客上已经积累了几道搜索和贪心的题目,11月剩下的20天就都给搜索了。
-----------------------------
p114 7.1.1
代码
#include <stdio.h> #include <string.h> int func(int num1, int num2) { char str1[6], str2[6]; int i, j; //保存数字的频率 int count[10] = { 0 }; //转换数字为字符 sprintf(str1, "%d", num1); sprintf(str2, "%d", num2); //如果i是四位数 也就是例子中0开头的 if (strlen(str2) == 4) { for (i = 4; i >= 0; i--) { str2[i + 1] = str2[i]; } str2[0] = '0'; } for (i = 0; i < strlen(str1); i++) { count[str1[i] - '0']++; } for (j = 0; j < strlen(str2); j++) { count[str2[j] - '0']++; } for (i = 0; i < 10; i++) { if (count[i] > 1) { return 0; } } return 1; } int main() { int n; int i; int num1; scanf("%d", &n); for (i = 1234; i <= 98765; i++) { num1 = n * i; if (num1 > 99999) { break; } else if (num1 < 10000) { continue; } else { if (func(num1, i)) { printf("%d / %d = %d ", num1, i, n); } } } return 0; }
这个不算难,就不多说了。
-------------------------------------
p115 7.1.2这个最大子序列的问题暴力的来搜索很简单的 但是优化算法真的很难 在《编程之美》中也有介绍
先mark 再看看http://www.ahathinking.com/archives/120.html
--------------------------------------
p115 7.1.3
这个题目只要就是要记住尽量减少减少暴力搜索的数字的个数,一定要想到题目后面分析的内容。
#include <stdio.h> int main() { int k, x, y; scanf("%d", &k); for (y = k + 1; y <= 2 * k; y++) { x = (k * y) / (y - k); if (x >= y) { printf("1 / %d = 1 / %d + 1 / %d ", k, x, y); } } return 0; }
----------------------------------