蛇形填数2

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

#include<stdio.h> 
#include<cstdlib>
#include<string.h>
#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+1<n && arr[x][y+1]==0) {
                arr[x][++y]=++count;
            }
            //对角 
            while (x+1<n && y-1>=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));

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值