求九宫格c++代码
3*3的正方形表格中有1-8这八个数,另一个是空格。要求将数字往空格中移动,使这八个数按照指定的顺序组成环,空格在中间。
答案:/* 示例输入:1 3 2 5 4 6 7 8 */
#include <stdio.h>
#include <stdlib.h>
void input(char *s){
int n[8],i;
printf("Please input original order of numbers:");
for(i=0;i<8;++i)
scanf("%d",n+i);
s[1]=n[0]+'0'; s[2]=n[1]+'0'; s[3]=n[2]+'0';
s[8]=n[3]+'0'; s[0]=' '; s[4]=n[4]+'0';
s[7]=n[5]+'0'; s[6]=n[6]+'0'; s[5]=n[7]+'0';
}
void print(char *s){
system("CLS");
printf("[%c]-[%c]-[%c]\n",s[1],s[2],s[3]);
printf(" | \\ | / | \n");
printf("[%c]-[%c]-[%c]\n",s[8],s[0],s[4]);
printf(" | / | \\ | \n");
printf("[%c]-[%c]-[%c]\n",s[7],s[6],s[5]);
printf("==============\t");
system("PAUSE");
}
void swap(char *s,int a,int b){
s[a]^=s[b]^=s[a]^=s[b];
print(s);
}
void moveto(char *array,int src,int tgt){
int i;
printf("move %d to %d \n",src,tgt);
swap(array,src,0);
for(i=src;i>tgt;--i){
swap(array,i-1,i);
}
swap(array,tgt,0);
}
int main(){
char array[9];
int i,j;
input(array);
system("CLS");
print(array);
for(i=1;i<8;++i){
if(array[i]-'0'==i)
continue;
for(j=i+1;j<9;++j)
if(array[j]-'0'==i){
moveto(array,j,i);
break;
}
}
printf("Succeed! \n");
system("PAUSE");
return 0;
}
上一个:一段C++代码
下一个:怎么在界面上用ajax获取struts2中action中的返回值啊??