求解答c语言传说中的印度人能够驯服毒蛇(viper),并懂得吹奏乐器使蛇翩翩起舞.在小人书或者电视电影上看到蛇总喜欢盘旋成一个螺旋饼状.蛇越长,盘旋所得的饼越大.Input有多个测试用例,每个
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 11:48:48
![求解答c语言传说中的印度人能够驯服毒蛇(viper),并懂得吹奏乐器使蛇翩翩起舞.在小人书或者电视电影上看到蛇总喜欢盘旋成一个螺旋饼状.蛇越长,盘旋所得的饼越大.Input有多个测试用例,每个](/uploads/image/z/6797843-35-3.jpg?t=%E6%B1%82%E8%A7%A3%E7%AD%94c%E8%AF%AD%E8%A8%80%E4%BC%A0%E8%AF%B4%E4%B8%AD%E7%9A%84%E5%8D%B0%E5%BA%A6%E4%BA%BA%E8%83%BD%E5%A4%9F%E9%A9%AF%E6%9C%8D%E6%AF%92%E8%9B%87%28viper%29%2C%E5%B9%B6%E6%87%82%E5%BE%97%E5%90%B9%E5%A5%8F%E4%B9%90%E5%99%A8%E4%BD%BF%E8%9B%87%E7%BF%A9%E7%BF%A9%E8%B5%B7%E8%88%9E.%E5%9C%A8%E5%B0%8F%E4%BA%BA%E4%B9%A6%E6%88%96%E8%80%85%E7%94%B5%E8%A7%86%E7%94%B5%E5%BD%B1%E4%B8%8A%E7%9C%8B%E5%88%B0%E8%9B%87%E6%80%BB%E5%96%9C%E6%AC%A2%E7%9B%98%E6%97%8B%E6%88%90%E4%B8%80%E4%B8%AA%E8%9E%BA%E6%97%8B%E9%A5%BC%E7%8A%B6.%E8%9B%87%E8%B6%8A%E9%95%BF%2C%E7%9B%98%E6%97%8B%E6%89%80%E5%BE%97%E7%9A%84%E9%A5%BC%E8%B6%8A%E5%A4%A7.Input%E6%9C%89%E5%A4%9A%E4%B8%AA%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%2C%E6%AF%8F%E4%B8%AA)
求解答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;
}