国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

HANOI塔問題的遞歸解

2019-11-17 05:41:17
字體:
來源:轉載
供稿:網友
    HANOI塔問題是《數據結構》中用來介紹遞歸算法的最典型的例題。    本程序可同時將HANOI塔問題的解題步驟的中間結果顯示在屏幕上和保存在文本文件中。(后一點對于顯示結果很多無法在一屏中顯示時,非凡有用)    程序思路很簡單,看注釋就明白了。
  /*
  Name:     hanoi2.c     
  Author:       zhuqing
  Description:      HANOI塔問題的遞歸解  
  Date: 06-08-03 11:44
  Copyright:
*/
#include <stdio.h>
#define N 5
/* 原柱,中間柱,目標柱初值數組 */
char a[]={'1','2','3','4','5'};
char b[]={'0','0','0','0','0'};
char c[]={'0','0','0','0','0'};
int step=0;
main()
{
FILE *fp;
int i;
if((fp=fopen("c://hanoi2.txt","w"))==NULL){
  getch();
 exit(0);
}
printf("/n============ HANOI TOWER ============/n");
print(N);
fprint(N,fp);
move(N,a,b,c,fp);
fclose(fp);
getch();
}
/* 遞歸函數 */
void move(int n,char a[],char b[],char c[],FILE* fp)
{
    if(n>0){
        move(n-1,a,c,b,fp);        c[n-1]=a[n-1];
        a[n-1]='0';
        print(N);
        fprint(N,fp);        move(n-1,b,a,c,fp);
    }   
}
/*  打印輸出結果到屏幕的函數    */
void print(n)
int n;
{
int i;
printf("/nSTEP%d",step++);
printf("/na:");
for(i=0;i<n;i++)
    printf("%3c",a[i]);
printf("/nb:");
for(i=0;i<n;i++)
    printf("%3c",b[i]);
printf("/nc:");
for(i=0;i<n;i++)
    printf("%3c",c[i]);
printf("/n-------------------------------------/n");
}
/*  打印輸出結果到文本文件的函數    */
void fprint(n,fp)
int n;
FILE *fp;
{
int i;
fputs("/na:",fp);
for(i=0;i<n;i++)
    fputc(a[i],fp);
fputs("/nb:",fp);
for(i=0;i<n;i++)
    fputc(b[i],fp);
fputs("/nc:",fp);
for(i=0;i<n;i++)
    fputc(c[i],fp);
fputs("/n-------------------------------------/n",fp);
}
           


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雷波县| 自贡市| 永州市| 独山县| 南皮县| 盐城市| 青海省| 石屏县| 白山市| 宁陵县| 白河县| 五原县| 黔西| 西藏| 象州县| 荥阳市| 胶州市| 新建县| 石门县| 枣庄市| 公主岭市| 南宫市| 潮安县| 太仓市| 峨边| 通河县| 山东省| 林芝县| 肥西县| 法库县| 巨野县| 嘉善县| 如皋市| 丰宁| 布尔津县| 永福县| 汶川县| 巨鹿县| 安吉县| 姜堰市| 孝昌县|