欢迎来到天天文库
浏览记录
ID:20887484
大小:37.50 KB
页数:6页
时间:2018-10-17
《全排列及八皇后问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、输入n个不同的数进行全排列。思路:用一个数组保存输入的值,采用递归的方法从第一个开始把每个元素的值与数组中的所有的值都交换进行排列,比如在输入1、2、3时交换的方式可以像下面一样1<->1,2<->2,3<->3输出1<->1,2<->3,3<->2输出1<->2,2<->1,3<->3输出1<->2,1<->3,3<->1输出1<->3,2<->2,3<->1输出1<->3,2<->1,3<->2输出我的代码:#include#includevoidset(inta[],ints,intn);intmain(void){intn;int*p;
2、printf("要全排的数的个数为:");scanf("%d",&n);printf("请输入%d个不同的数进行全排列:",n);p=newint[n];for(inti=0;i3、%d",p[i]);putchar('');}else{for(i=s;i4、e*base;PosType*top;intlen;}*Slink,Stack;StatusInitStack(Slink&S);StatusPush(SlinkS,PosTypee);StatusPop(SlinkS,PosType&e);intStackLength(SlinkS);Statuspass(SlinkS,PosTypee);voidtry_put(intn,SlinkS);voidoutput(SlinkS);.cpp源文件:#include"八皇后.h"#include#include#include#inclu5、deinttotle=0;StatusInitStack(Slink&S){S=(Slink)malloc(sizeof(Stack));if(!S)exit(0);S->base=(PosType*)malloc(INIT_STACK*sizeof(PosType));if(!S->base)exit(0);S->top=S->base;S->len=INIT_STACK;//printf("构造空栈完成");returnOK;}StatusPush(SlinkS,PosTypee){if(S->top-S->base>=S->len){S->base=6、(PosType*)realloc(S->base,(S->len+INCREMENT)*sizeof(PosType));if(!S->base)exit(0);S->top=S->base+S->len;S->len+=INCREMENT;}*S->top++=e;//printf("%d进栈完成",e);returnOK;}StatusPop(SlinkS,PosType&e){if(S->top==S->base){printf("栈已为空");returnERROR;}e=*--S->top;//printf("%d出栈完成",e);returnOK;}i7、ntStackLength(SlinkS){//printf("栈的长度为:%d",S->top-S->base);return(S->top-S->base);}Statuspass(SlinkS,PosTypee){PosType*p=S->base;while(p!=S->top){if(p->y==e.y8、9、abs(p->x-e.x)==abs(p->y-e.y))returnERROR;p++;}returnOK;}voido
3、%d",p[i]);putchar('');}else{for(i=s;i4、e*base;PosType*top;intlen;}*Slink,Stack;StatusInitStack(Slink&S);StatusPush(SlinkS,PosTypee);StatusPop(SlinkS,PosType&e);intStackLength(SlinkS);Statuspass(SlinkS,PosTypee);voidtry_put(intn,SlinkS);voidoutput(SlinkS);.cpp源文件:#include"八皇后.h"#include#include#include#inclu5、deinttotle=0;StatusInitStack(Slink&S){S=(Slink)malloc(sizeof(Stack));if(!S)exit(0);S->base=(PosType*)malloc(INIT_STACK*sizeof(PosType));if(!S->base)exit(0);S->top=S->base;S->len=INIT_STACK;//printf("构造空栈完成");returnOK;}StatusPush(SlinkS,PosTypee){if(S->top-S->base>=S->len){S->base=6、(PosType*)realloc(S->base,(S->len+INCREMENT)*sizeof(PosType));if(!S->base)exit(0);S->top=S->base+S->len;S->len+=INCREMENT;}*S->top++=e;//printf("%d进栈完成",e);returnOK;}StatusPop(SlinkS,PosType&e){if(S->top==S->base){printf("栈已为空");returnERROR;}e=*--S->top;//printf("%d出栈完成",e);returnOK;}i7、ntStackLength(SlinkS){//printf("栈的长度为:%d",S->top-S->base);return(S->top-S->base);}Statuspass(SlinkS,PosTypee){PosType*p=S->base;while(p!=S->top){if(p->y==e.y8、9、abs(p->x-e.x)==abs(p->y-e.y))returnERROR;p++;}returnOK;}voido
4、e*base;PosType*top;intlen;}*Slink,Stack;StatusInitStack(Slink&S);StatusPush(SlinkS,PosTypee);StatusPop(SlinkS,PosType&e);intStackLength(SlinkS);Statuspass(SlinkS,PosTypee);voidtry_put(intn,SlinkS);voidoutput(SlinkS);.cpp源文件:#include"八皇后.h"#include#include#include#inclu
5、deinttotle=0;StatusInitStack(Slink&S){S=(Slink)malloc(sizeof(Stack));if(!S)exit(0);S->base=(PosType*)malloc(INIT_STACK*sizeof(PosType));if(!S->base)exit(0);S->top=S->base;S->len=INIT_STACK;//printf("构造空栈完成");returnOK;}StatusPush(SlinkS,PosTypee){if(S->top-S->base>=S->len){S->base=
6、(PosType*)realloc(S->base,(S->len+INCREMENT)*sizeof(PosType));if(!S->base)exit(0);S->top=S->base+S->len;S->len+=INCREMENT;}*S->top++=e;//printf("%d进栈完成",e);returnOK;}StatusPop(SlinkS,PosType&e){if(S->top==S->base){printf("栈已为空");returnERROR;}e=*--S->top;//printf("%d出栈完成",e);returnOK;}i
7、ntStackLength(SlinkS){//printf("栈的长度为:%d",S->top-S->base);return(S->top-S->base);}Statuspass(SlinkS,PosTypee){PosType*p=S->base;while(p!=S->top){if(p->y==e.y
8、
9、abs(p->x-e.x)==abs(p->y-e.y))returnERROR;p++;}returnOK;}voido
此文档下载收益归作者所有