您的位置:首页 > 其它

算法竞赛入门经典 学习笔记

2013-11-10 20:33 351 查看
组长说应付蓝桥杯这一本书就够了,这几天看搜索还有贪心,真的是看题目一个都不会啊,然后看别人的代码还看不大懂。。哎,所以还是好好的学习吧。

这几天在博客上已经积累了几道搜索和贪心的题目,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\n", 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\n", k, x, y);
}
}
return 0;
}


----------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: