算法竞赛入门经典~chapter 3 例题

3-1  开灯问题

有n盏灯,编号为1~n。第一个人把所有打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关 (其中关掉的灯被打开你,开着的灯将被关闭),一次类推。一共有k个人,问最后又哪些灯开着?输入 :n和k,输出开着的灯编号。k <= n <= 1000.

样例输入:7 3

样例输出:1 5 6 7

Code

3-2  蛇形填数(抽象问题)

在n*n方阵里填入1,2,…,n*n,要求填成蛇形。例如4时方阵为:

10  11  12   1
9  16  13   2
8  15  14   3
7   6   5   4

上面的方阵中,多余的空格只是为了便于观察规律,不必严格输出。n <= 8。

从x=0,y=n-1,即第0行,第n-1列。“笔”的移动轨迹是:下,下,下,,左,左,左,上,上,上,右,右,下,下,上。总之,先是下,都不能填了为止,然后是左,接着是上,最后是右。“不能填”是指再走就出界了,或者再走就要走到以前体拿过的格子。如果我们把所有格子初始化为0,就能方百年地加以判断。

Code1
C++_Style:

3-3  竖式问题

找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前对应有编号,只有应有一个空行。最后输出解的总数。

样例输入:2357

样例输出:

<1>
  775
X  33
-----
2325
2325
-----
25575


The number of solutions = 1


 

Code


3-4 回文串(编码阶段可以采用迭代式开发:每次只实现一点小功能,但要充分测试,确保它工作正常。)

输入一个字符串,求出其中最长的回文子串。字串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。在判断时,应该忽略suoyou8标点符号和空格,且忽略大小写,单输出应保持鸳鸯(在回文串的首部和尾部不要输出多余字符)。输入字符串长度不超过5000,且占据单独一行。应该输出最长的回文串,如果有多个,输出起始位置最靠左的。

样例输入:Cofuciuss say:Madam,i'm Adam.

样例输出:Madam, i'm Adam

Code


 


 

原文地址:https://www.cnblogs.com/sanghai/p/2825639.html