湖南师范大学第四届大学生计算机程序设计竞赛练习

蛇形矩阵
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB
Total submit users: 44, Accepted users: 44
Problem 11315 : No special judgement
Problem description
  按要求打印一个n x n的矩阵
Input
  输入n
Output
  输出 n x n的矩阵(0 < n < 10) 输出格式: C  printf(“%3d”, ....)
C++  cout << setw(3) << ...
Sample Input
1
2
3
Sample Output
  1
  1  2
  4  3
  1  2  3
  8  9  4
  7  6  5

#include <iostream>
#include <cstdio>

using namespace std;

#define maxn 10+5

int a[maxn][maxn];

int main(void)
{
	int n;
	while(cin>>n){
		int count = 1;
		int x,y,round;
		if(n == 1){
			a[0][0] = count;
		}else{
			for(round=0; round<n/2; round++){
				x = round;
				for(y=round;y<n-round;y++){
					a[x][y]=count;
					count++;
				}
				y = n - round - 1;
				for(x=round+1;x<n-round-1;x++){
					a[x][y]=count;
					count++;
				}
				x = n - round - 1;
				for(y=n-round-1;y>=round;y--){
					a[x][y]=count;
					count++;
				}
				y = round;
				for(x=n-round-1-1;x>round;x--){
					a[x][y]=count;
					count++;
				}
			}
			if(n%2 == 1){
				a[n/2][n/2] = count;
			}
		}
		for(x=0;x<n;x++){
			for(y=0;y<n;y++){
				printf("%3d",a[x][y]);
			}
			printf("\n");
		}
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值