CCF——Z字形掃描問題


 

試題編號: 201412-2
試題名稱: Z字形掃描
時間限制: 2.0s
內存限制: 256.0MB
問題描述:
問題描述
  在圖像編碼的算法中,需要將一個給定的方形矩陣進行Z字形掃描(Zigzag Scan)。給定一個n×n的矩陣,Z字形掃描的過程如下圖所示:

  對於下面的4×4的矩陣,
  1 5 3 9
  3 7 5 6
  9 4 6 4
  7 3 1 3
  對其進行Z字形掃描后得到長度為16的序列:
  1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
  請實現一個Z字形掃描的程序,給定一個n×n的矩陣,輸出對這個矩陣進行Z字形掃描的結果。
輸入格式
  輸入的第一行包含一個整數n,表示矩陣的大小。
  輸入的第二行到第n+1行每行包含n個正整數,由空格分隔,表示給定的矩陣。
輸出格式
  輸出一行,包含n×n個整數,由空格分隔,表示輸入的矩陣經過Z字形掃描后的結果。
樣例輸入
4
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3
樣例輸出
1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
評測用例規模與約定
  1≤n≤500,矩陣元素為不超過1000的正整數

 

 

 

#include<iostream>
using namespace std; int main() { int n,flag=1,t=2; cin>>n; int a[n+1][n+1]; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>a[i][j]; } } while(t==2) { cout<<a[1][1]<<" "; t++; } for(t;t<=2*n;t++) { if(flag==1) { for(int i=1;i<t;i++) { if(i<=n&&t-i<=n) cout<<a[i][t-i]<<" "; } flag=0; } else if(flag==0) { for(int i=1;i<t;i++) { if(i<=n&&t-i<=n) cout<<a[t-i][i]<<" "; } flag=1; } } return 0; }

求解思路:本題方法比較簡單,有切問題規模也不是很大,所以相對於來說比較容易。如果能看出來其輸出規則的規律還是很容易求解的。我的思路就是暴力求解,其輸出規則為數組下標之和一次增大,每次輸出一次調換一次方向。有了這個規律之后就是設計程序了。具體設計方法因人而異,上代碼如上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM