数字拼图神器手机版:8 和一个空格。要实现能拼图功能?大概的算法是怎样的!

太平洋在线下载手机版 183 1

  #include

#include

#include

#include

int main(void)

void swap(int *a,int *b); //子函数声明

int i,j,k,n,puzzle[81]={0},parity[81]={0}; //拼图数组和奇偶性数组

char ch; //用来记录拼图数组可以转换成顺序矩阵数字拼图神器手机版,还是逆序矩阵

printf("游戏说明

printf("↑ :数字向上 ↓ :数字向下

printf("← :数字向左 → :数字向右

printf("Esc:退出程序 Space:重置矩阵

printf("

loop1:

printf("难度设置

n:");

scanf("%d",&n);

loop2:

system("cls"); //清屏

srand((unsigned)time(NULL)); //动态获取数据

for(i=0;iparity[j]) k ; //求奇偶性数组的“逆序数和”

if(k%2==0) printf("%d

顺序矩阵",n),ch='0'; //“逆序数和”为偶数时数字拼图神器手机版,是顺序矩阵

else printf("%d

逆序矩阵",n),ch='1'; //“逆序数和”为奇数时数字拼图神器手机版,是逆序矩阵

printf("

for(i=0;i1*(n-1)) swap(&puzzle[i],&puzzle[i-n]);break; //数字向下

case 75:if((i 1)%n!=0) swap(&puzzle[i],&puzzle[i 1]);break; //数字向左

case 77:if((i 0)%n!=0) swap(&puzzle[i],&puzzle[i-1]);break; //数字向右

case 27:exit(0); //退出程序

case 32:goto loop2; //重置矩阵

system("cls"); //清屏

switch(ch)

case '0':printf("%d

顺序矩阵

",n);break; //完成拼图的最终目标

case '1':printf("%d

逆序矩阵

",n);break; //完成拼图的最终目标

for(i=0;i {

if(puzzle[i]==0) printf("%*c",n,' '); //是0(空格)的位置数字拼图神器手机版,打印空格

else printf("%-*d",n,puzzle[i]); //是数字的位置数字拼图神器手机版,打印对应宽度的数字

if((i 1)%n==0&&i!=n*n-1) printf("

"); //每打印n个数字数字拼图神器手机版,换一行打印

for(i=0;i {

if(puzzle[i]!=i) break; //判断拼图数组是否为顺序矩阵或逆序矩阵

if(i==n*n-2)

{ //是顺序矩阵或是逆序矩阵时数字拼图神器手机版,完成拼图

printf("

恭喜你数字拼图神器手机版,拼图完成了!

"); //打印完成标志

printf("Continue(y/n)?");

if(getch()=='y')

system("cls"); //清屏

goto loop1; //重新开始

else

exit(0); //退出程序

getch(); //显示运行结果

return(0); //正常运行返回0

void swap(int *a,int *b)

int c;

c=*a;

*a=*b;

*b=c;

}数字拼图神器手机版

标签: 拼图 空格 算法 大概 实现

抱歉,评论功能暂时关闭!