19.数圈
【問題描述】
以1為中心,用2,3,4, ..., n, ..., n*n的數字圍繞著中心輸出數圈, 如若n=4,則
7 8 9 10
6 1 2 11
5 4 3 12
16 15 14 13
【輸入形式】
一個整數n(1<=n<=10)
【輸出形式】
數圈矩陣
【樣例輸入】
5【樣例輸出】
21?22?23?24?25 20?7?8?9?10 19?6?1?2?11 18?5?4?3?12 17?16?15?14?13感悟:這題題目簡單,但實現起來還是有點難的,最后借鑒了大佬的代碼,實現了一遍最后才明白。感謝大佬。
#include<bits/stdc++.h> using namespace std; int main() {int n;cin>>n;int arr[n][n];int pos;if(n%2==0) pos=n/2-1;else pos=n/2;int left,right;left=right=pos;//從1開始 arr[pos][pos]=1;for(int i=2,temp=1; i<=n*n; temp++) {if(temp%2==1) { //temp為奇數 這個循環是向右下走for(int k=0; k<temp&&i<=n*n; k++) arr[left][++right]=i++;//往右走for(int k=0; k<temp&&i<=n*n; k++) arr[++left][right]=i++;//變方向,往下走} else { //temp為偶數,這個循環是往左上走for(int k=0; k<temp&&i<=n*n; k++) arr[left][--right]=i++;//往左走for(int k=0; k<temp&&i<=n*n; k++) arr[--left][right]=i++;//變方向,往上走}}for(int i=0; i<n; i++) { //輸出數組for(int j=0; j<n; j++)cout<<arr[i][j]<<' ';cout<<endl;}return 0;}總結
- 上一篇: 第一个vtk.js程序 锥子
- 下一篇: python 文件名批量修改、重命名