Tin học In ra ma trận xoắn ốc cỡ n * n

Junery N

Cựu Hỗ trợ viên
HV CLB Địa lí
Thành viên
23 Tháng mười một 2019
4,605
12,668
1,021
Nam Định
In the sky

dangtiendung1201

Cựu Mod Toán
Thành viên
24 Tháng mười hai 2018
1,272
1,359
191
20
Thái Bình
THCS Lương Thế VInh-Thành phố Thái Bình
Giúp em với ạ:
Input: Nhập 1 số nguyên n <= 10
Output: Ma trận xoắn ốc cỡ n*n
Ví dụ
Input: 3
Output: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
Thanks
Đây là bài in mảng xoắn ốc nxm của mình. Bạn tham khảo
Mã:
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a[25][25],b[1000],i,j,n,m,k=0,d=0;
    cin >> n >> m;
    for (i=0; i<n*m; i++)
        cin >> b[i];
    sort(b,b+n*m);
    if (n==1)
    {
        for (int i=0; i<m; i++)
        {
            cout << b[i] << " ";
        }
        return 0;
    }
    if (m==1)
    {
        for (int i=0; i<n; i++)
        {
            cout << b[i] << endl;
        }
        return 0;
    }
    i=0;
    while (k<n*m)
    {
        for (j=d; j<m-d; j++)
            {
                a[i][j]=b[k];
                k++;
            }
        j=m-d-1;
        for (i=1+d; i<n-d; i++)
            {
                a[i][j]=b[k];
                k++;
            }
        i=n-d-1;
        for (j=m-2-d; j>=d; j--)
            {
                a[i][j]=b[k];
                k++;
            }
        j=d;
        for (i=n-2-d; i>d; i--)
            {
                a[i][j]=b[k];
                k++;
            }
        i=1+d;
        d++;
    }
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
 
Top Bottom