Z字形掃描
from CCF-CSP 2014-12-2
Time limit:2s
Memory limit:256MB

模擬一下掃描標記的移動,注意掃描超過了副對角線過后掃描轉移會改變就可以了
ac代碼:
#include<bits/stdc++.h>
using namespace std;
int m,n,x[505][505],i,j,k,row,col;
void solve1(){ //向左下
while(col >= 1 && row <= n)
cout<<" "<<x[row][col],++row,--col;
--row,++col;
if(row < n) //為下次右上做準備,如果還未到對角,那么向下掃描,否則向右掃描
++row;
else
++col;
}
void solve2(){ //處理方式同上
while(row >= 1 && col <= n)
cout<<" "<<x[row][col],++col,--row;
--col,++row;
if(col < n)
++col;
else
++row;
}
int main(){
cin>>n;
for(i = 1;i <= n;++i)
for(j = 1;j <= n;++j)
cin>>x[i][j];
cout<<x[1][1],m = n * 2 - 2,row = 1,col = 2; //初始化
for(k = 1;k <= m;++k)
if(k & 1)
solve1();
else
solve2();
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275076.html
標籤:其他
下一篇:A*演算法
