富有敗筆的B1050 螺旋矩陣 (25分)
富有敗筆的B1050 螺旋矩陣 (25分)
本題要求將給定的 N 個正整數按非遞增的順序,填入“螺旋矩陣”。所謂“螺旋矩陣”,是指從左上角第 1 個格子開始,按順時針螺旋方向填充。要求矩陣的規模為 m 行 n 列,滿足條件:m×n 等於 N;m≥n;且 m−n 取所有可能值中的最小值。
輸入格式:
輸入在第 1 行中給出一個正整數 N,第 2 行給出 N 個待填充的正整數。所有數字不超過 10^4 ,相鄰數字以空格分隔。
輸出格式:
輸出螺旋矩陣。每行 n 個數字,共 m 行。相鄰數字以 1 個空格分隔,行末不得有多餘空格。
輸入樣例:
12
37 76 20 98 76 42 53 95 60 81 58 93
輸出樣例:
98 95 93
42 37 81
53 20 76
58 60 76
思路:這次比較笨拙了,程式碼比較複雜,首先需要設計好螺旋矩陣的矩陣大小m和n,設計出矩陣後再從一個矩陣的座標開始,題目中根據從小到大的方式放入一個二維的陣列當中去。根據走迷宮的方式找到每一個沒有數字的空位填入進去,簡而言之些就是碰到南牆就轉頭。
目標:首先要把輸入的數字們排個序,其次需要把轉彎的演算法實現。
程式碼如下:
#include <iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
bool cmp(int a, int b)
{
return a>b;
}
int main()
{ char name= 'R';
int N;
scanf("%d",&N);
int m=N,n=1,m1,n1;
int min=1000000000;
while(m>=n)//定義m與n的值
{
if(N%m==0)
{
n=N/m;
if(m>=n&&min>m-n)
{
min =m-n;
m1=m;
n1=n;
}
}
m--;
}
m = 0;
n = 0;
int m2 = m1 ;
int n2=n1;
int a[N] ;
for(int i = 0 ; i<N ;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+N,cmp);
int s[n1][m1];
int step =0,count = 0;
for(step;step<N;step++)//撞了南牆的實現方法
{
if(name =='R')
{
s[n][m]=a[step];
n++;
if(n==n1)
{ m++;
n--;
n1=n;
name ='D';
}
}
else if(name =='D')
{
s[n][m]=a[step];
m++;
if(m==m1)
{
m--;
m1=m;
name ='L';
}
}
else if(name =='L')
{
n--;
s[n][m]=a[step];
if(n==count)
{
count++;
name ='U';
}
}
else
{
m--;
s[n][m]=a[step];
if(m==count)
{
n++;
name='R';
}
}
}
for(int i = 0; i<m2;i++)
{
for(int j = 0;j<n2;j++)
{
printf("%d",s[j][i]);
if(j!=n2-1)
printf(" ");
}
printf("\n");
}
return 0;
}
2021的考研小夥伴們加油!
距2022考研還有360幾天
相關文章
- 螺旋矩陣矩陣
- leetcode:螺旋矩陣LeetCode矩陣
- 54. 螺旋矩陣矩陣
- [Leetcode]59.螺旋矩陣ⅡLeetCode矩陣
- 力扣-54. 螺旋矩陣力扣矩陣
- 6.5陣列--模擬、偏移量-螺旋矩陣陣列矩陣
- Q14 LeetCode59 螺旋矩陣LeetCode矩陣
- LeetCode 59. 螺旋矩陣 II(python、c++)LeetCode矩陣PythonC++
- C語言實現矩陣螺旋輸出C語言矩陣
- 【程式碼隨想錄】一、陣列:5.螺旋矩陣陣列矩陣
- LeetCodeHot100 73. 矩陣置零 54. 螺旋矩陣 48. 旋轉影像 240. 搜尋二維矩陣 IILeetCode矩陣
- 977.有序陣列的平方 ,209.長度最小的子陣列 ,59.螺旋矩陣II陣列矩陣
- 【leetcode】每日精選題詳解之59. 螺旋矩陣 IILeetCode矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 資料結構與演算法---螺旋矩陣、整數反轉資料結構演算法矩陣
- Day2| 977.有序陣列的平方 ,209.長度最小的子陣列 ,59.螺旋矩陣II陣列矩陣
- Day2 |977.有序陣列的平方& 209.長度最小的子陣列&59.螺旋矩陣II陣列矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 求任意矩陣的伴隨矩陣矩陣
- 【numpy學習筆記】矩陣操作筆記矩陣
- 鄰接矩陣、度矩陣矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 程式碼隨想錄演算法訓練營第二天 | 陣列 59.螺旋矩陣演算法陣列矩陣
- 程式碼隨想錄刷題day 2 | 977.有序陣列的平方、 209.長度最小的子陣列、 59.螺旋矩陣II陣列矩陣
- 矩陣矩陣
- 軟考筆記-有向圖的鄰接矩陣筆記矩陣
- 伴隨矩陣和逆矩陣的關係證明矩陣
- 經典題目螺旋方陣的詳解
- 矩陣和陣列矩陣陣列
- 程式碼隨想錄演算法訓練營Day2|209.長度最小的子陣列 59.螺旋矩陣演算法陣列矩陣
- 理解矩陣矩陣
- 海浪矩陣矩陣
- 矩陣相乘矩陣
- 稀疏矩陣矩陣
- 矩陣乘法矩陣
- 8.6 矩陣?矩陣
- 找矩陣矩陣