蛇形填数2

题目:跟蛇形填数一样,只是填数要求按照三角形填。注意每组数据之间用空行隔开
1 2 3 4 5
12 13 14 6
11 15 7
10 8
9
思路:根据数组下标来模拟蛇形填数的过程即可,注意y+1,y++,++y ,在数组下标里面的意义,
还有就是要用memset清空数组

#include 
#include
#include
#define Max 1000
using namespace std;
int arr[Max][Max];//存储的数组 

int main(){
    int t,n,x,y,count;
    //t t组测试数据 n 三角形的边长  x,y 数组的下标  count 计数 
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        x=0,y=0;
        count=arr[x][y]=1;
        while (count<(n+1)*n/2) {
            //向左 
            while (y+11]==0) {
                arr[x][++y]=++count;
            }
            //对角 
            while (x+11>=0 && arr[x+1][y-1]==0) {
                arr[++x][--y]=++count;
            }
            //向上 
            while (x-1>0 && arr[x-1][y]==0) {
                arr[--x][y]=++count;
            }
        }
        //输出 
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (arr[i][j]!=0) {
                    printf("%d ",arr[i][j]);
                }else{
                    break;
                }
            }
            printf("\n");
        }
         memset(arr, 0, sizeof(arr));

    }
}

你可能感兴趣的:(算法)