算法
文章平均质量分 71
ZH奶酪
这个作者很懒,什么都没留下…
展开
-
n皇后问题【非递归回溯】
/*非递归回溯算法解决n皇后问题*/#include#include int a[20];//最多可以解决20皇后问题int check(int n){ int i,flag; flag = 1; for (i=1;i { if (abs(a[i]-a[n])==abs(i-n) || a[i]==a[n]) { flag=0; br原创 2012-03-11 20:10:47 · 661 阅读 · 0 评论 -
杨辉三角
#include "stdio.h"#include "stdlib.h"void main(){ int i,k,l; int *j; printf("输入想要显示的层数:"); scanf("%d",&i); j = (int *)malloc(sizeof(int)*(i+1)); // memset(j,0,sizeof(int)*(i+1));原创 2012-03-11 20:17:28 · 319 阅读 · 0 评论 -
费式数列
#include"stdio.h"void main(){ int a,b; int m,n; a = 0; b = 1; n = 1; printf("输入要显示费式数列前几位?:"); scanf("%d",&m); if (m>=1) { printf("%3d",a); } if (m>=2) { printf("%3d"原创 2012-03-11 20:15:36 · 334 阅读 · 0 评论 -
组合C(N,M)【一个思路,两种解法】
//下边的代码可以输出各种组合,如果添加一个int全局变量就可以统计个数了。//如果只统计个数可以用f(n,m)=f(n-1,m-1)+f(n-1,m);而不用拷贝数组、输出数组之类的~//注意b free的位置,写错2次//malloc(b)应该放在结束条件之后#include #include #define N 5#define M 4void f(int原创 2012-03-11 20:14:58 · 468 阅读 · 0 评论 -
骑士走棋盘【非递归,贪心,回溯】
/*1:骑士的走法:沿四个方向中的某个方向走两步,然后转90度,即“L”路线。如果骑士当前坐标是(i,j),骑士可走的位置包括(i+2,j+1)、(i+2,j-1)、(i-2,j+1)、(i-2,j-1)、(i+1,j+2)、(i-1,j+2)、(i+1,j-2)、(i+1,j-2)八个位置2:8*8的棋盘至少走63步,如果用递归的话,就是嵌套至少63层循环,效率不高3:用原创 2012-03-11 20:14:08 · 955 阅读 · 0 评论 -
三色旗问题
/*三色旗问题:假设有一个数组,它有n个元素,每一个不外乎是红,白,蓝3种颜色之一的代号,就用R,W,B代表。这些元素在数组中并没有依同样颜色的元素排在一起的方式来排列,请写一个程序把这些元素排成所有蓝色在前,接着是白色,最后是红色的排列方式,不过在写程序时要满足下面的条件:(1)不能用额外的内存,换句话说,只能在数组之内用互换的方式完成。(2)互换两个元素的动作要越少越好。(原创 2012-03-11 20:18:41 · 2192 阅读 · 0 评论 -
老鼠走迷宫【1】
/*★1:【数据结构不一定要物理实现】数据结构用到了栈,但是这个栈并不是物理上存在的,只是一种逻辑上存在的模型★2:【回溯的边界、结束条件判定】算法策略用到了回溯法,在编写代码过程中,要注意边界条件和结束条件的判定,还要注意回溯的位置★3:如何自动生成迷宫?★4:如何找出全部通路?*/#include "stdio.h"int success = 0;int原创 2012-03-11 20:16:37 · 558 阅读 · 0 评论 -
老鼠走迷宫【2】
/*★1:【数据结构不一定要物理实现】数据结构用到了栈,但是这个栈并不是物理上存在的,只是一种逻辑上存在的模型。★2:【回溯的边界,结束条件判定】算法策略用到了回溯法,在编写代码过程中,要注意边界条件和结束条件的判定,还要注意回溯的位置。★3:【输出全部解,最后一层输出】要想输出全部的解,老鼠走迷宫(1)中的success一定是没用了,因此只要去掉条件中的(success!原创 2012-03-11 20:16:06 · 369 阅读 · 0 评论 -
n皇后问题【递归】
/*递归回溯深度优先搜索解决n皇后问题用三个数组b,c,d分别记录棋盘上的n个列,2n-1个主对角线和2n-1个负对角线的占用情况。用i,j表示皇后所在的行列,同一主对角线上的行列下标的差一样,若用表达式i-j编号,则是-n+1~n-1,所以用表达式i-j+n对主对角线编号,范围是1~2n-1;同样的,负对角线上行列下标的和一样,用表达式i+j编号,则范围2~2n*/#原创 2012-03-11 20:12:48 · 404 阅读 · 0 评论 -
21位花朵数
/*(编程题)花朵数一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。例如:当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水仙花数(其中,“^”表示乘方,5^3表示5的3次方,也就是立方)。当N=4时,1634满足条件,因为 1^4 + 6^4 + 3^4 + 4^4 = 1634。当N原创 2012-03-11 20:18:06 · 699 阅读 · 0 评论