一、漢諾塔
#include "stdio.h"
#include "stdlib.h"
void move(int n, char x, char y, char z)
else }
int main()
二、斐波那契數列
#include "stdio.h"
#define maxsize 40
void iterfib(void)
printf("\n");
}int fib(int i)
void fibresult(void)
printf("\n");
}void print(void)
void main()
三、二分查詢
#include "stdio.h"
int p2p(int high, int low, int *l, int x)
mid = (int)(high + low) / 2;
if(l[mid] == x)
return mid;
else if(l[mid] > x)
return p2p(mid, low, l, x);
else
return p2p(high, mid, l, x);
}void p2presult(int num)
; int flag;
flag = p2p(9, 0, &a, num);
if(flag < 0)
printf("error: number is not found\n");
else
printf("the number index is %d\n", flag);
}void main()
四、八皇后問題
#include "stdio.h"
int count = 0;
/****************************
row: 起始行
n: 列
(*chess)[8]:每一行指標
*****************************/
int notdanger(int row, int j , int (*chess)[8])
}// 判斷左上
for ( i = row, k = j ;i >= 0 && k >= 0 ; i--, k--)
}// 判斷右下
for ( i = row, k = j ;i < 8 && k < 8 ; i++, k++)
}// 判斷右上方
for ( i = row, k = j; i >=0 && k < 8; i--, k++)
}// 判斷左下方
for ( i = row, k = j; i < 8 && k >= 0; i++, k--)
}if (flag1 || flag2 || flag3 || flag4 || flag5)
else
}void eightqueen(int row, int n, int (*chess)[8])
}if (8 == row)
printf("\n");
}printf("\n");
count ++;
}else
*(*(chess2 + row) + j) = 1;
eightqueen(row + 1, n, chess2);
}}
}}int main()
}eightqueen(0, 8, chess);
printf("總共有%d種解決方法\n\n", count);
return 0;
}
資料結構 遞迴思想及遞迴實現迷宮問題
遞迴 就是自己呼叫自己,然後一層層返回 乙個簡單的例子 列印問題 public static void main string args 列印問題 我們可以分析這個程式的執行過程 程式的方法在虛擬機器的棧空間執行 這就是遞迴的過程 有這樣乙個迷宮,從起點到終點,紅色是牆,黃色的是路,可以走,一次走一...
資料結構和演算法(遞迴和分治思想)
遞迴 乙個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,稱作遞迴函式 分治思想 將乙個問題分為幾個小的模組,逐一解決 輸入任意長度的字元,並反向輸出 遞迴 include void print if a int main void 斐波那契數列實現 迭代 遞迴 斐波拉契數列 include...
資料結構思想
程式的好壞一般來說有2個標準,乙個是時間複雜度,乙個是空間複雜度。時間複雜度說的是程式執行的時間 空間複雜度說的是程式的記憶體占用的多少。而資料結構就是為了解決時間複雜度的,或者說乙個好的資料結構 演算法 可以節省程式執行的時間。顧名思義,線性表是一條線的。首先要稍稍提一下,資料結構的儲存只有陣列 ...