求解答c语言传说中的印度人能够驯服毒蛇(viper),并懂得吹奏乐器使蛇翩翩起舞.在小人书或者电视电影上看到蛇总喜欢盘旋成一个螺旋饼状.蛇越长,盘旋所得的饼越大.Input有多个测试用例,每个
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 21:18:35
求解答c语言传说中的印度人能够驯服毒蛇(viper),并懂得吹奏乐器使蛇翩翩起舞.在小人书或者电视电影上看到蛇总喜欢盘旋成一个螺旋饼状.蛇越长,盘旋所得的饼越大.Input有多个测试用例,每个
求解答c语言
传说中的印度人能够驯服毒蛇(viper),并懂得吹奏乐器使蛇翩翩起舞.在小人书或者电视电影上看到蛇总喜欢盘旋成一个螺旋饼状.蛇越长,盘旋所得的饼越大.
Input
有多个测试用例,每个用例一行.每个测试用例只有一个整数n( 0 < n < 100 ),表示蛇盘旋所得饼状图形的边长.最后一个用例n=-1,不用处理.
Output
输出n*n的盘旋数字矩阵.数字之间用一个空格分隔.每个测试用例的结果之间输出一个空行.
Sample Input
34-1
Sample Output
1 2 38 9 47 6 51 2 3 412 13 14 511 16 15 610 9 8 7
Author
John
请看后面的simple output.
求解答c语言传说中的印度人能够驯服毒蛇(viper),并懂得吹奏乐器使蛇翩翩起舞.在小人书或者电视电影上看到蛇总喜欢盘旋成一个螺旋饼状.蛇越长,盘旋所得的饼越大.Input有多个测试用例,每个
#include <stdlib.h>
#include <stdio.h>
#define BLANK -1
int matrix[128][128];
int N,N2;
void snake(int i,int j,char direction,int val){
matrix[i][j]=val;
if(val>=N2)
return;
switch(direction){
case 'R':
if(j+1<N&&matrix[i][j+1]==BLANK){
matrix[i][j+1]=val+1;
snake(i,j+1,'R',val+1);
}else{
snake(i,j,'D',val);
}
break;
case 'L':
if(j>0&&matrix[i][j-1]==BLANK){
matrix[i][j-1]=val+1;
snake(i,j-1,'L',val+1);
}else{
snake(i,j,'U',val);
}
break;
case 'U':
if(i>0&&matrix[i-1][j]==BLANK){
matrix[i-1][j]=val+1;
snake(i-1,j,'U',val+1);
}else{
snake(i,j,'R',val);
}
break;
case 'D':
if(i+1<N&&matrix[i+1][j]==BLANK){
matrix[i+1][j]=val+1;
snake(i+1,j,'D',val+1);
}else{
snake(i,j,'L',val);
}
break;
default:
printf("bad direction!\n");
}
}
int main()
{
int i,j;
scanf("%d",&N);
while(N!=-1){
N2=N*N;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
matrix[i][j]=BLANK;
}
}
matrix[0][0]=1;
snake(0,0,'R',1);
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%d",matrix[i][j]);
if(j!=N-1)
printf(" ");
}
printf("\n");
}
scanf("%d",&N);
}
return 0;
}