アンチスパイラル形式でマトリックスを印刷する
n * nの2次元配列が与えられ、タスクは与えられた行列のスパイラル対策の配置を見つけることです
Input : arr[4][4]={1,2,3,4,
5,6,7,8,
9,10,11,12
13,14,15,16}
Output: 10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1
このために、スタックを使用して、マトリックスの転置をスタック内にプッシュし、逆にポップすることができます
アルゴリズム
START STEP 1 -> declare stack vector element as stk and variables as int r=4, c=4, i, j, rs=0 and cs=0 Step 2 -> store matrix elements in 2-3 array Step 3 -> Loop For i=0 and o<4 and i++ Loop For j=0 and j<4 and j++ Print arr[i][j] End Print \n End Step 4 -> Loop While rs<c and cs<r Loop For i=rs and i<c and i++ Push arr[rs][i] End cs++ Loop For i=cs and i<r-1 and ++i Push arr[r-1][i] End c— IF(cs<r) Loop For i=r-1 and i>=rs and –i Push arr[r-1][i] End r- - End IF(rs<c) Loop For i=c-1 and i>=cs and i- - Push arr[i][rs] End Rs++ End End Step 5 -> Loop While !stk.empty() Print stk.top() Call pop() End STOP
例
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main(){
stack <int> stk;
int R=4,C=4,i,j,RS=0,CS=0;
int mat[R][C] = { {1,2,3, 4}, {5,6,7,8},{9,10,11,12},{13,14,15,16}};
for(i=0;i<4;i++){
for(j=0;j<4;j++)
cout<<mat[i][j]<<" ";
cout<<"\n";
}
while(RS<C&&CS<R) {
for(i=RS;i<C;i++)
stk.push(mat[RS][i]);
CS++;
for(i=CS;i<R-1;++i)
stk.push(mat[i][C-1]);
C--;
if(CS<R){
for(i=R-1;i>=RS;--i)
stk.push(mat[R-1][i]);
R--;
}
if(RS<C){
for(i=C-1;i>=CS;i--)
stk.push(mat[i][RS]);
RS++;
}
}
while(!stk.empty()){
cout<<stk.top()<<" ";
stk.pop();
} 出力
上記のプログラムを実行すると、次の出力が生成されます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 10 11 7 6 5 9 13 14 15 16 12 8 4 3 2 1
-
Cプログラムで行列を斜め下向きに印刷します。
サイズnxnの配列が与えられ、タスクは整数型の行列要素を対角線下に印刷することです。 斜め下向きとは、下の図のように、任意のサイズのnxnの配列を斜め下向きに印刷することを意味します- 最初に1を印刷し、次に2に移動して印刷し、対角線上に4に移動して、以下同様に印刷します。 例 Input: Matrix [3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }} Output: 1 2 4 3 5 7 6 8 9 アルゴリズム int diagonally_down
-
与えられた行列をC++で反時計回りのスパイラル形式で印刷します
この問題では、2次元の行列が与えられます。そして、私たちのタスクは、から反時計回りのスパイラルで行列の要素を印刷することです。 反時計回りのスパイラルフォーム −これは、左上から始まり、反時計回りに最初の右下から左上に向かって進むスパイラルトラバーサルです。 反時計回りのトラバーサルは159 13 14 15 16 12 8 4 3 2 6 10117になります。 問題を理解するために例を見てみましょう Input: 2 4 6 1 7 9 5 0 3 Output: 2 1 5 0 3 9 7 この問