#20892: c++ 很數學的解法


s009 (jessie)

學校 : 不指定學校
編號 : 87583
來源 : [140.118.82.10]
最後登入時間 :
2022-04-28 17:31:25
a417. 螺旋矩陣 | From: [36.233.82.88] | 發表日期 : 2020-03-16 23:26

懶得解釋了

能不能看懂就看個人造化了

 

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

int main(){
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int t;
    cin >> t;
    while(t--){
        int n, m;
        cin >> n >> m;
        int x[n][n] = {0}, s = 3 - 2*m;
        for(int i = n*2, a = 0, b = 0, tmp = 1; i > 0; --i){
            for(int j = i/2; j > 0; --j){
                x[a][b] = tmp;
                ++tmp;
                if(j != 1) a += (m - 1)%2, b += (-m + 2)%2;
                /*if(m == 1) ++b;
                else if(m == 2) ++a;
                else if(m == 3) --b;
                else --a;*/
            }
            m = (m + s + 4)%4;
            a += (m - 1)%2, b += (-m + 2)%2;
        }
        for(int i = 0; i < n; ++i){
            for(int j = 0; j < n; ++j) cout << setw(5) << x[i][j];
            cout << '\n';
        }
        cout << '\n';
    }
    return 0;
}

 
ZeroJudge Forum