
递归
文章平均质量分 52
acm_JL
这个作者很懒,什么都没留下…
展开
-
第五届_蚂蚁感冒
100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。 这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。 请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。【数据格式】第一行输入一个整数n (1 接着的一行是n个用空格分开的整数 X原创 2016-03-01 18:42:42 · 902 阅读 · 0 评论 -
汉诺塔问题
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。问:如何移?最少要移动多少次?#includeusing namespace std;void hannoi(int n,char from, char buffer, char to){ if(n==1) { co原创 2016-02-18 15:23:33 · 1553 阅读 · 0 评论 -
八皇后问题
题目:经典的八皇后问题,即在一个8*8的棋盘上放8个皇后,使得这8个皇后无法互相攻击( 任意2个皇后不能处于同一行,同一列或是对角线上),输出所有可能的摆放情况。解题思路:我们用一个一维数组来表示相应行对应的列,比如c[i]=j表示, 第i行的皇后放在第j列。如果当前行是r,皇后放在哪一列呢?c[r]行一共有8列,所以我们要让c[r]依次取第0列,第1列,第2列……一直到第7列,原创 2016-02-19 23:19:41 · 2407 阅读 · 1 评论 -
全排列问题
全排列就是从第一个数字起每个数分别与它后面的数字交换。#include #include void Swap(char *a, char *b){ char t = *a; *a = *b; *b = t;}//k表示当前选取到第几个数,m表示共有多少数.void Range(char *str, int k, int m){ if (k == m) { sta原创 2016-02-20 16:29:28 · 1373 阅读 · 0 评论 -
全排列
#includeusing namespace std;void Arrangement(int list[],int k,int m){ if(k==m) { for(int i=0;i<=m;i++) { cout<<list[i]<<" "; } cout<<endl; } else { for(int j=k;j<=m;j++) { sw原创 2016-03-19 20:50:54 · 530 阅读 · 0 评论 -
整数的划分
整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分,是指把一个正整数n写成如下形式: n=m1+m2+...+mi; (其中mi为正整数,并且1 如果{m1,m2,...,mi}中的最大值不超过m,即max(m1,m2,...,mi) 例如当n=4时,他有5个划分,{4},{3,1},{2,2},{2原创 2016-03-19 20:57:34 · 856 阅读 · 0 评论