适合刚学完C/C++的算法系列1:

1.题目很简单就是把字符串的一部分调换位置,

   比如字符串有n个元素,把p到n-1的字符串,调换到字符串前。

   比如字符串:n=10,a[]={1,2,3,4,5,6,7,8,9,10};

   p=4的化,转换后a[]={5,6,7,8,9,10,1,2,3,4};

2.约瑟夫问题的:编号为1,2,....,N的N个人按顺时针方向围坐一圈,

每人持有一个密码(正整数),一开始任选一个正整数作为报数上限值M,

从第一个人开始按顺时针方向自1开始顺序报数,报到M时停止报数。

报M的人出列,将他的密码作为新的M值,

从他在顺时针方向上的下一个人开始重新从1报数,

如此下去,直至所有人全部出列为止。

试设计一个程序求出出列顺序。

3.问题:N个人围成一圈,从1抱到M,从第一个人报数(从1报到M),

凡报到M的人退出圈子,问最后留下的是原来的几号。

4.九位累进可除数

求九位累进可除数。所谓九位累进可除数就是这样一个数:这个数用到1到9这九个数字组成,每个数字刚好只出现一次。这九个位数的前两位能被2整除,前三位能被3整除……前N位能被N整除,整个九位数能被9整除。

5.魔术师的猜牌术

魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,然后按顺序从上到下数手上的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上,第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是黑桃3。这样依次进行将13张牌全翻出来,准确无误。问魔术师手中的牌原始顺序是怎样安排的?