题目
输出图形,n=5时,如下
1 3 4 10 11
2 5 9 12
6 8 13
7 14
15
代码
#include<iostream>
using namespace std;
int main(){
int n,x,y,i,fx;
cin>>n;
//创建二维数组
int **m = new int*[n];
for(i=0;i<n;i++){
m[i] = new int[n];
}
//初始化
for(x=0;x<n;x++)
for(y=0;y<n;y++)
m[x][y]=0;
//fx: 0向下,1右上走,2向右走,3左下走
x=y=fx=0;
i=1;
do{
m[x][y] = i++;
switch(fx){
case 0:
y++;
fx = 1;
break;
case 1:
y--;
x++;
if(y==0) fx = 2;
break;
case 2:
x++;
fx=3;
break;
case 3:
y++;
x--;
if(x==0) fx=0;
break;
}
}while(x<n && y<n);
//打印
for(y=0;y<n;y++){
for(x=0;x<n;x++){
if(m[x][y])cout<<m[x][y]<<" ";
}
cout<<endl;
}
return 0;
}