文章

34

粉丝

0

获赞

6

访问

1.1k

头像
旋转方阵 题解:

关键:

1.根据题目要求进行模拟,d用于控制填充方向 

2.注意输出格式

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n; cin >> n;
	
	int a[20][20] = {0};
	int i = -1, j = 0;
	char d = 'd';
	for(int cnt = 1; cnt <= n*n; cnt++){
		
		if(d == 'd'){ 
			a[++i][j] = cnt; // 向下down
			if(i == n-1 || a[i+1][j] != 0) d = 'r';
		}
		else if(d == 'r'){
			a[i][++j] = cnt; // 向右right
			if(j == n-1 || a[i][j+1] != 0) d = 'u';
		}
 		else if(d == 'u'){
			a[--i][j] = cnt; // 向上up
			if(i == 0 || a[i-1][j] != 0) d = 'l';
		}
		else {
			a[i][--j] = cnt; // 向左left
			if(j == 0 || a[i][j-1] != 0) d = 'd';
		}

	}
	
	for(int i = 0; i < n; i++){
		for(int j = 0; j < n; j++) printf("%-4d",a[i][j]);;
		cout << "\n";
	}
	
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发