C语言编的九连环_C-C
- 格式:doc
- 大小:26.00 KB
- 文档页数:3
c语言九连环解法-回复C语言九连环解法引言:C语言九连环是一道经典的编程题目,也是C语言中一个有趣的编程挑战。
该题目要求将九个相连的环,按照一定规则进行拆解和重组,最终要求得到一个特定的顺序。
本文将一步一步地回答关于C语言九连环解法的问题,并详细解释每一步的思路和实现方式。
第一步:问题理解与约束条件在开始解决九连环问题之前,我们首先需要理解题目的要求和约束条件。
九连环是由九个相连的环组成的,每个环上有一个数字,范围是1到9。
我们需要将这九个环重新排列,使得相邻环上的数字之和为一个特定的值。
同时,有一个约束条件,即任意两个相邻环上的数字不能相等。
第二步:问题分析与解决思路九连环问题其实是一个全排列问题。
我们需要将九个数按照一定的规则进行排列,使得满足题目要求。
解决这个问题的思路是使用回溯法。
回溯法通常用于解决由多个可能的解组成的问题,这些问题通常可以表示成一个树形结构。
在每一个步骤中,我们都会面临多个可能的选择,我们通过试错的方式不断尝试每一种选择,当发现当前选择无法得到解答时,回溯到上一步,再尝试其他的选择,直到找到解答或者所有的选择都尝试完毕。
第三步:解决思路的具体实现针对九连环问题,我们可以将每一个环抽象为问题树上的一个节点。
每一层代表一个环,每个节点有九个可选的数字。
我们可以通过递归的方式,深度优先遍历问题树,不断试探每一种选择,并且在每一步进行剪枝操作。
具体实现上,我们可以定义一个递归函数,该函数接受三个参数:当前的层数depth,当前的数字组合combination,以及目标和target。
在每一层中,我们通过循环从1到9尝试每一个数字,当发现某个数字已经被使用过时,我们跳过该数字,继续尝试其他数字。
在每一步中,我们需要判断当前的数字组合是否满足题目要求,如果满足要求,我们输出解答。
否则,我们继续递归调用函数,进入下一层,并且更新数字组合和目标和。
在实现上,我们可以使用一个数组来表示环的布局,初始状态下,该数组为空。
C语⾔实现汉诺塔(图⽂详解)⽬录思路:当n=1时:当n=2时:当n=3时:当n=4时:见代码运⾏截图总结汉诺塔的游戏规则:有三根⾦刚⽯柱⼦A、B、C,在A柱⼦上从下往上按照⼤⼩依次减⼩的顺序摞着64⽚黄⾦环。
⼤梵天命令婆罗门把环从下⾯开始按⼤⼩顺序重新摆放在另⼀根柱⼦上。
并且规定,在任何⼀个柱⼦上,⼩环上不能放⼤环,在三根柱⼦之间⼀次只能移动⼀个环。
即将A柱⼦上全部的环通过中间柱⼦B(B柱⼦作为中介)移动到C柱⼦上当A只有⼀个环的时候:A->C当A只有两个环的时候:A->B A->C B->C当A只有三个环的时候:A->C A->B C->B A->C B->A B->C A->C思路:1、将 n-1个环先放到B柱⼦上2、将A柱⼦上的最后⼀个环移动到C柱⼦上3、将n-1个环从B柱⼦移动到C柱⼦上当n=1时:1、将0个环先放到B柱⼦上2、将A柱⼦上的最后⼀个环移动到C柱⼦上:A->C3、将0个环从B柱⼦移动到C柱⼦上当n=2时:1、将1个环先放到B柱⼦上:A->B2、将A柱⼦上的最后⼀个环移动到C柱⼦上:A->C3、将1个环从B柱⼦移动到C柱⼦上:B->C当n=3时:1、将2个环先放到B柱⼦上:使⽤递归将2个环放到B上,因为A柱⼦的最后⼀个环是最⼤的因此可以先不理会,递归重复当n=2时的步骤,不过是从将2个环从A放到C上改为将2个环从A放到B上了2、将A柱⼦上的最后⼀个环移动到C柱⼦上:A->C3、将2个环从B柱⼦移动到C柱⼦上:使⽤递归将2个环从B柱⼦移动到C柱⼦上,此时C柱⼦上已经有了最⼤的⼀个环因此可以不⽤再理会了,递归重复当n=2的步骤,不过是从将2个环从A放到C上改为将2个环从B放到C上了当n=4时:1、将3个环先放到B柱⼦上:递归重复n=3的步骤,不过是从将3个环从A放到C上改为将3个环从A放到B上了2、将A柱⼦上的最后⼀个环移动到C柱⼦上:A->C3、将3个环从B柱⼦移动到C柱⼦上:递归重复当n=3的步骤,不过是从将3个环从A放到C上改为将3个环从B放到C上了见代码#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void move(char X, char Y){printf("%c->%c ", X, Y);}void HanoiTower(int n, char A, char B, char C){if (n == 1)//递归终⽌条件{move(A, C);return;}else{HanoiTower(n - 1, A, C, B);//将n-1个环从A柱⼦放到B柱⼦上,C柱⼦作为中介move(A, C);//将A柱⼦上的最后⼀个环移动到C柱⼦上HanoiTower(n - 1, B, A, C);//将n-1个环从B柱⼦放到C柱⼦上,A柱⼦作为中介}}int main(){printf("请确认A柱⼦上⼀共有多少个环:\n");int n = 0;scanf("%d", &n);HanoiTower(n, 'A','B','C');//将n个环从A柱⼦放到C柱⼦上,B柱⼦作为中介}运⾏截图总结本篇⽂章就到这⾥了,希望能给你带来帮助,也希望您能够多多关注的更多内容!。
九连环的求解c语言-回复如何通过C语言解决九连环问题九连环,又称九连环盒子游戏,是一种古老的中国传统智力玩具。
它由九个圆环组成,每个圆环都穿插在其他圆环上,通过巧妙的操作,将九个环分离,是这个游戏的目标。
在本文中,我们将阐述如何使用C语言解决这个问题。
首先,我们需要了解九连环的基本结构。
九连环由九个圆环组成,每个圆环都有一个孔,离孔的距离相等。
在游戏开始时,这九个环连在一起,我们的目标是将它们分离。
解决这个问题的第一步是定义九连环的数据结构。
我们可以使用一个整型数组表示九连环,每个元素即表示一个圆环,通过将每个元素设置为1或0来表示圆环的落锁状态,其中1表示落锁,0表示未落锁。
接下来,我们需要实现九连环的初始化函数。
初始化函数的目的是将九连环的初始状态设置为所有圆环未落锁。
我们可以使用循环语句来遍历九连环的数组,并将每个元素设置为0,代码如下:cvoid initialize(int* rings) {int i;for (i = 0; i < 9; i++) {rings[i] = 0;}}在初始化函数之后,我们需要编写一个函数来模拟九连环的旋转操作。
旋转操作是九连环分离的关键步骤之一。
我们可以使用循环语句来依次改变九连环的状态,代码如下:cvoid rotate(int* rings, int position) {rings[position] = !rings[position];if (position - 1 >= 0) {rings[position - 1] = !rings[position - 1];}if (position + 1 < 9) {rings[position + 1] = !rings[position + 1];}}上述函数中,`position`表示当前旋转的圆环位置,函数会将该位置的圆环状态取反,并同时改变左边和右边圆环的状态。
接下来,我们需要实现九连环问题的求解函数。
九连环数学公式九连环是中国传统的智力玩具,它不仅有趣好玩,还蕴含着丰富的数学知识。
要探讨九连环的数学公式,咱们得先从它的构造和玩法说起。
九连环主要由九个圆环和一个框架组成。
玩的时候,就是要把这九个环按照特定的规则解下来或者装上去。
这看似简单的操作,背后藏着的数学奥秘可不少。
先来说说九连环的状态。
每个环都有两种状态,要么在框架上,要么不在框架上。
咱们可以用 1 表示在框架上,用 0 表示不在框架上。
这样一来,九连环的整个状态就可以用一个由 9 个数字组成的二进制数来表示啦。
要解开九连环,这里面涉及到的操作步骤可是有规律的。
比如说,要解下第 n 个环,得先满足一些前置条件。
这就好像咱们做数学题,得先有条件才能得出结论。
我还记得有一次,我在教室里给一群小朋友展示九连环。
我刚开始摆弄的时候,孩子们都瞪大眼睛好奇地看着,叽叽喳喳地讨论着。
当我解到一半卡住的时候,一个聪明的小家伙还着急地喊:“老师,你是不是弄错啦!”我笑着说:“别急别急,咱们一起研究研究。
”最终,在大家的共同努力下,成功解开了九连环,孩子们那兴奋的样子,至今让我难忘。
咱们再深入一点,从数学的角度来看,解九连环所需的最少移动次数是有公式可以计算的。
这个公式是:f(n)=[2^n + 2^(-n) - 2] / 3 (其中n 为环的个数)。
这个公式看起来有点复杂,但其实它很好地揭示了九连环的内在规律。
比如说,当 n=1 时,也就是只有一个环,那最少移动次数就是 1 次,这很容易理解吧。
当 n=2 时,算出来最少移动次数是 2 次,也符合咱们实际操作的情况。
而且,通过这个公式,咱们还能发现一些有趣的现象。
随着环的个数增加,所需的最少移动次数增长得非常快。
这就好像是指数增长一样,让人惊叹数学的神奇。
在学习九连环的数学知识过程中,咱们能锻炼自己的逻辑思维能力。
就像解数学题一样,一步一步,环环相扣,不能出错。
每一次成功解开九连环,都像是解决了一道难题,那种成就感简直爆棚。
营销九连环第三环――编程编程是达到既定目标的行动方案的制定过程。
在编程篇里,详细介绍了一些如何制定行动计划的基本的方法,并配以案例。
希望通过学习能使你有一个清晰的认识一、行动从计划开始古人云:“凡事预则立,不预则废”——计划是一切成功的关键一)有条不紊的推销员1、制定推销计划联单制定推销计划对推销工作具有重要意义,它不仅是公司考核推销员工作的依据,也是推销员取得良好推销业绩的前提和基础。
在推销训练课程中有句常用的口号:“计划你的工作和按你的计划工作”,我们常见到一些西方的推销员轻松地接连转移他们的销售阵地,他们工作得很出色,但并不艰苦,同时也常看到另一些推销员往往手忙脚乱,穷于应付,他们虽然工作很努力,但效果却很差。
这主要在于他们在推销活动的组织安排和计划上的差异。
推销工作的特点是自己可以安排工作日程,决定每天的工作量。
其优点是灵活,缺点是必须自己严格要求自己,要有坚强意志否则就会养成懒散习惯,结果一事无成。
严格要求自己的方法之一,就是要掌握科学推销方法,拟定计划,执行计划,并对执行情况进行检查,以不断总结和改进计划。
制定推销计划可以节省时间和有效利用有限的时间。
据美国大西洋石油公司的一项调查显示,优秀推销员和劣等推销员在交通时间相同情况下,在时间安排上有明显差别(见下表)优劣推销员时间安排对比表事务处理及准备等候面谈开拓新客户接触和交易聊天优秀推销员21% 6% 22% 40% 11%劣等推销员13% 12% 11% 21% 43%从表中可以看出,优秀和劣等推销员在时间安排的明显差别是,优秀推销员用于准备、开拓新客户和接触及交易的时间多,而劣等推销员用于等候面谈和聊天时间多,这一调查结果为推销员怎样有计划利用时间提供了参考。
推销计划可以分为年计划、月计划和日计划。
一般来说,公司管理部门要求推销员汇报年计划或月计划,并对计划的制定提出指导思想和修改意见,而日计划则由推销员自己制定。
日计划是年、月计划制定的基础,它的完成也是年、月计划完成的保证,所以日计划的制定至关重要。
c语言判断数独合理
C语言可以用来判断数独是否合理。
数独是一种数字逻辑游戏,玩家需要在9x9的方格中填入数字1-9,使得每一行、每一列和每
一个3x3的小方格内都包含了1-9的数字,而且数字不能重复。
在
C语言中,可以通过编写算法来判断玩家填入的数字是否符合数独
游戏的规则。
首先,可以使用C语言中的数组来表示数独的9x9方格,然后
编写函数来检查每一行、每一列和每一个3x3的小方格内是否包含
了1-9的数字并且数字不重复。
这可以通过双重循环和条件判断来
实现。
另外,可以使用递归算法来填充空白格子并检查每次填充后
数独是否合理。
此外,C语言还可以通过文件输入输出来实现对数独游戏的读
取和检查。
可以编写函数来读取数独游戏的初始状态,并将玩家填
入的数字写入文件中,然后再进行数独合理性的判断。
总之,C语言可以通过数组、函数、循环和条件判断等基本编
程概念来判断数独是否合理,通过合理的算法设计和实现,可以有
效地判断数独游戏的合理性。
C语⾔实现数字连连看本⽂实例为⼤家分享了C语⾔实现数字连连看的具体代码,供⼤家参考,具体内容如下要求连连看⼩游戏开发,使⽤⼆维数组来保存游戏地图的数据,实现连连看的核⼼功能。
欢乐连连看的功能有:主界⾯、开始游戏、消⼦、判断胜负、提⽰、重排、计时、游戏模式。
主界⾯游戏主界⾯就是进⾏各项操作的⼊⼝。
开始游戏玩家选择开始游戏模式,进⼊游戏后,选择开始游戏,系统根据设置随机⽣成数字,以供玩家点击消除。
消⼦对玩家选中的两张图⽚进⾏判断,判断是否符合消除规则。
只有符合以下规则的图⽚对才能被消除:⼀条直线连通两条直线连通三条直线连通如果可以消除,两个数字变为0。
如果不能消除,则保持原来的游戏地图。
判断胜负当游戏完成后,需要判断游戏胜负。
不同模式下判断胜负的规则不同。
基本模式时,如果在五分钟内将游戏地图的所有图⽚都消除,则提⽰玩家胜利。
休闲模式时,如果游戏地图中所有图⽚都被消除,则提⽰玩家获胜。
提⽰可以提⽰界⾯上能够消除的⼀对图⽚。
计时设定⼀定时间来辅助游戏是否结束。
游戏模式游戏模式有:基本模式、休闲模式和关卡模式三种,可以根据是否定时等规则进⾏设置。
代码#include <stdio.h>#include <stdlib.h>#include <time.h>#define WIDTH 10#define HEIGHT 12int datas[HEIGHT][WIDTH] = {0};int Choose_type ();void Creat_datas (int fol);bool IsHLinked(int x1,int y1,int x2,int y2);bool IsVLinked(int x1,int y1,int x2,int y2);bool IsZeroTurnLinked(int x1,int y1,int x2, int y2); //⼀条线bool IsOneTurnLinked(int x1, int y1, int x2,int y2); //⼆条线bool IsTwoTurnLinked(int x1,int y1,int x2,int y2); //三条线bool Judge_Answer (int x1,int y1,int x2,int y2); //判断是否可消去void Print_datas ();bool Play_Game (int Flo);bool Relax_Play ();//休闲bool Win_Play ();//闯关int main(){int Flo;Flo = Choose_type (); // choose the typeif (Flo == 0) return 0;srand(unsigned(time(NULL)));Creat_datas(Flo); //creat the graphPrint_datas ();bool ov;ov = Play_Game (Flo);if (ov == true){printf ("VICTORY");}else{printf ("FAILED");}return 0;}bool Basic_Play (){long int t1 ,t2 = 0 ;int op = 1;int x1,y1,x2,y2;bool ANS;printf ("五分钟计时开始\n");t1 = clock();while (t2 < 300000 && !Isblank() && op != 0 ){if (op == 1){Print_datas ();printf("请输⼊两者的坐标[x1 y1 x2 y2]:"); //从上到下,从左到右,先⾏后列 scanf("%d %d %d %d",&x1,&y1,&x2,&y2);if (Judge_Answer (x1, y1, x2,y2)){datas[x1][y1] = datas[x2][y2] = 0;Print_datas ();}else{printf("错误");}}if (op == 2){ANS = Help_ans ();Print_datas ();if (ANS == false){printf ("已没有可以消去的\n");return true;}}printf("是否继续游戏 1、YES 0、NO 2、HELP:");scanf ("%d",&op);t2 = clock() - t1;}if (t2 > 299){printf ("超时\n");return false;}if (Isblank()) return true;else return false;}bool Help_ans (){int k;for (int i = 1; i < 11;i++){if (datas[i][j] != 0){k = j+1;for (int m = i; m < 11;m++){for (int n = k; n < 9;n++){if (datas[i][j] == datas[m][n]){if (Judge_Answer(i,j,m,n)){printf ("(%d,%d) (%d,%d)\n",i,j,m,n);datas[i][j] = datas[m][n] = 0;return true;}}}k = 1;}}}}return false;}bool Relax_Play (){int op = 1;int x1,y1,x2,y2;bool ANS;while (!Isblank() && op != 0) //G isn't blank{if (op == 1){Print_datas ();printf("请输⼊两者的坐标[x1 y1 x2 y2]:");scanf("%d %d %d %d",&x1,&y1,&x2,&y2);if (Judge_Answer (x1, y1, x2,y2)){datas[x1][y1] = datas[x2][y2] = 0;Print_datas ();}else{printf("错误");}}if (op == 2){ANS = Help_ans ();Print_datas ();if (ANS == false){printf ("已没有可以消去的\n");return true;}}printf("是否继续游戏 1、YES 0、NO 2、HELP:"); scanf ("%d",&op);}if (!Isblank()) return false;else return true;}bool Win_Play (){int op = 1;int x1,y1,x2,y2;bool ANS;while (!Isblank() && op != 0) //G isn't blank{if (op == 1){Print_datas ();if (Judge_Answer (x1, y1, x2,y2)){datas[x1][y1] = datas[x2][y2] = 0;Print_datas ();}else{printf("错误");}}printf("是否继续游戏 1、YES 0、NO :");scanf ("%d",&op);}if (!Isblank() && Help_ans) return false;elsereturn true ;}bool Isblank (){for(int j=1; j < 10 ; j++){for (int i= 1; i< 8 ; i++){if (datas[j][i] != 0) return false;}}return true;}bool Play_Game (int Flo){bool Ans;if (Flo == 1) //the basic type{printf ("基本模式:\n");Ans = Basic_Play ();return Ans;}if (Flo == 2) //the relax type{printf ("休闲模式:\n");Ans = Relax_Play ();return Ans;}else //the win type{printf ("第%d关游戏:\n",Flo - 2);Ans = Win_Play ();return Ans;}}void Print_datas (){for(int j=1; j < 11 ; j++){printf("\t\t");for (int i= 1; i< 9 ; i++){printf("%d\t",datas[j][i]);}printf("\n");}}bool Judge_Answer (int x1,int y1,int x2,int y2){if (datas [x1][y1] != datas[x2][y2] || datas [x1][y1] == 0 || datas [x2][y2] == 0 ) return false; if (x1 == x2 && y1 == y2) return false;if (x1 > 11 || x2 > 11 || y1> 9 || y2 > 9) return false;if (x1 == x2 || y1 == y2){if (IsZeroTurnLinked(x1,y1,x2,y2) || IsTwoTurnLinked(x1,y1,x2,y2)) return true;}return false;}int Choose_type (){printf("请选择你要进⾏的操作:1,开始游戏 2,结束游戏\n");int op;scanf("%d",&op);if (op == 1){printf("\n请选择游戏模式:1、基本模式 2、休闲模式 3、关卡模式\n"); int ops;scanf ("%d",&ops);if (ops == 1) return 1;if (ops == 2) return 2;if (ops == 3){printf("\n请选择你选择的关卡3-16:");int opsd;scanf ("%d",&opsd);return opsd;}}if (op == 2) return 0;}void Creat_datas (int fol){int tmpDatas[80] = {0}; // 定义⼀个临时数组⽤于存放int PicNum[] = {3,4,5,1,2,7,9,6,8,44,78,12,90,33,34};int Count = 0,i, j, d = 0,Pic,tem,t;Pic = 8 * 10 / (fol + 9 );for(j=0; j < 80 ; j++){tmpDatas[j] = PicNum[d];Count++;if (Count == Pic ){d++;Count = 0;}}d = 80;for(j=1;j < HEIGHT - 1;j++)for (i = 1;i < WIDTH - 1; i++){t = rand() % d; //Fisher-Yates Shuffletem = tmpDatas[t];tmpDatas[t] = tmpDatas[d -1];tmpDatas[d - 1] = tem;datas[j][i] = tmpDatas[d -1];d--;}}bool IsHLinked(int x1,int y1,int x2,int y2) //横向是否连接{int minY,maxY;if (x1 != x2) return false;if (y1 < y2){minY = y1;maxY = y2;}else{minY = y2;maxY = y1;}if (maxY - minY == 1) return true;for ( int i = minY +1; i < maxY ; i++) //从左到右检查中间的点是不是空的 {if (datas[x1][i] != 0) return false;bool IsVLinked(int x1,int y1,int x2,int y2) //纵向是否连接{int minX,maxX;if (y1 != y2) return false;if (x1 < x2){minX = x1;maxX = x2;}else{minX = x2;maxX = x1;}if (maxX - minX == 1) return true;for ( int i = minX +1; i < maxX ; i++){if (datas[i][y1] != 0) return false;}return true;}bool IsZeroTurnLinked(int x1,int y1,int x2, int y2) //不转折时判断{if (IsHLinked(x1, y1, x2,y2)){return true ;}if (IsVLinked(x1, y1, x2, y2)){return true ;}return false;}bool IsOneTurnLinked(int x1, int y1, int x2,int y2) //转折⼀次{int tmpX[2] = { x1, x2 };int tmpY[2] = { y2, y1 };for (int i = 0; i < 2; i++){if (datas[tmpX[i]][tmpY[i]] != 0) continue;if (IsZeroTurnLinked( tmpX[i], tmpY[i], x1, y1) && IsZeroTurnLinked( tmpX[i], tmpY[i], x2,y2)){return true;}}return false;}bool IsTwoTurnLinked(int x1,int y1,int x2,int y2){int j, tmpX1,tmpY1,tmpX2,tmpY2;//纵向遍历所有点tmpX1 = x1;for ( j = 0; j < WIDTH; j++){tmpY1 = j;if (j == y1) continue;if (tmpX1 == x2 && tmpY1 == y2) continue; //重合tmpX2 = x2;tmpY2 = tmpY1;if (datas[tmpX1][tmpY1] != 0 || datas[tmpX2][tmpY2] != 0) continue;if (IsZeroTurnLinked(tmpX1, tmpY1, tmpX2, tmpY2) && IsZeroTurnLinked(tmpX1, tmpY1, x1, y1) && IsZeroTurnLinked(tmpX2, tmpY2, x2, y2)) return true;}//横向遍历所有点tmpY1 = y1;for ( j = 0; j < HEIGHT; j++)if (j == x1) continue;if (tmpY1 == y2 && tmpX1 == x2) continue; //重合tmpY2 = y2;tmpX2 = tmpX1;if (datas[tmpX1][tmpY1] != 0 || datas[tmpX2][tmpY2] != 0) continue;if (IsZeroTurnLinked(tmpX1, tmpY1, tmpX2, tmpY2) && IsZeroTurnLinked(tmpX1, tmpY1, x1, y1) && IsZeroTurnLinked(tmpX2, tmpY2, x2, y2)) {return true;}}return false;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
素数环是一种数学结构,它由一组互不相同的素数构成,这些素数按顺序排列,并且最后一个素数与第一个素数相邻,形成一个环。
以下是一个用C语言编写的示例代码,用于生成素数环:```c#include <stdio.h>#include <stdbool.h>// 检查一个数是否为素数bool isPrime(int num) {if (num <= 1) {return false;}for (int i = 2; i * i <= num; i++) {if (num % i == 0) {return false;}}return true;}int main() {int n; // 输入素数环的长度printf("请输入素数环的长度:");scanf("%d", &n);if (n <= 1) {printf("素数环的长度必须大于1。
\n");return 1;}int primes[n]; // 存储素数环的数组// 从2开始找素数并填充素数环数组int current = 2;for (int i = 0; i < n; i++) {while (!isPrime(current)) {current++;}primes[i] = current;current++;}// 输出素数环printf("素数环:");for (int i = 0; i < n; i++) {printf("%d", primes[i]);if (i < n - 1) {printf(" -> ");} else {printf(" -> %d", primes[0]); // 最后一个素数与第一个素数相邻}}printf("\n");return 0;}```这段代码首先要求用户输入素数环的长度(必须大于1),然后使用`isPrime` 函数来生成素数并填充素数环数组。
C语言编的九连环_C/C++,编程联盟_程序员必上的编程门户网站毕业设计设为首页收藏本站
找找看
频道导航.NET数据库Java网络编程语言WEB开发重点导航最新编程资料热门编程文章编程工具大集合下载精品电子书教程下载
首页 | 虚拟主机 | 毕业论文 | .NET源码 | | 技术教程 | | 文档| 工具 | 源码 | 编程工具
| 网页特效 | 视频教程 | 程序员微博 | 毕业设计
网站运营IT新闻数据库Java技术网络技术程序语言WEB开发操作系统网站设计应用技巧通信技术SOA软件应用认证考试
企业应用
服务器
首页>>开发资料>>C/C++>> C语言编的九连环 C语言编的九连环点击:1266 发布时间:2009-7-12 0:00:00 作者: 本站整理来源:
互联网 -
定做出售计算机毕业论文 毕业设计网进入程序员微博交流程序员点点滴滴
#include<stdio.h>
static int upstep = 0;
static int downstep = 0;
void UpRing(int n); /*加上函数说明,否则编译将会出一点小错误*/
void DownRing(int n) /*下环的逻辑就体现在这里*/
{
if(n>2) DownRing(n-2);
printf("DW:%d\t",n);++downstep;
if(n>2) UpRing(n-2);
if(n>1) DownRing(n-1);
}
void UpRing(int n) /*上环的逻辑则体现在这里*/
{
if(n>1) UpRing(n-1);
if(n>2) DownRing(n-2);
printf("UP:%d\t",n);++upstep;
if(n>2) UpRing(n-2);
}
int
main(int argc, char **argv) /*简洁的主函数*/
{
if(argc < 2)
{
puts("Usage:./jiulianhuan 9");
return -1;
}
int rings = atoi(argv[1]);
puts("Starting...");
DownRing(rings);
puts("\nEnding...")
printf("\nup = %d\tdown = %d\n",upstep,downstep);
return 0;
}
分享到程序员微博
-
文章来源:/news/Content.aspx?id=55267
文章来源:/news/Content.aspx?id=55267
毕业设计定做出售 毕业论文
上一条:C语言学习方面的知识
下一条:如何快速成长为一名厉害的网页设计师收藏本文章关闭本页 毕业设计定做网站专题 C/C++ 类最新文章C语言的静态函数
C++的学习历程
strftime ()函数
VC程序移植到Linux系统
this指针在继承中的重要性
C++代码行内的空格
C++类成员函数的重载、覆盖与隐藏
C++标准头文件结构
Java与C++编程的不同
C/C++中Static的作用
C++中使用Lambda函数提高代码性能
C++中随机存取文件
结构体类型变量的定义和引用
相关热门推荐文章c/c++中指针学习的两个绝好例子 - 编程联盟编程...
c语言写的一个游戏 - 编程联盟编程资料
C++中类的数据成员的安全隐患
C++计算四则表达式的模板 - 编程联盟编程资料
在C++中创建持久对象
C语言初学者入门讲座第十六讲文件(2)
深入探讨C++中的引用
C语言初学者入门讲座第十六讲文件(1)
C++编译器如何实现异常处理
C++箴言:让=返回一个*this的引用
C++箴言:绝不在构造或析构期调用虚函数
解释一个关于Hibernate lazy的问题
Java版本和C++版本简单Stack程序
编程联盟 | 编程论坛 | 关于本站 | 站点地图 | 友情链接 | 联系我们|版权声明|购买本站广告
Powered by 编程联盟 2007-2010 冀ICP备08005404号
编程联盟群:群1【39111008】
群2【60142030】群三【83882594】群四【62585405】群五【37260303】群六【32771492】群七【85894797】群八【42624779】欢迎讨论技术
网站统计。