POJ-3509-Rotating Rings
来源:互联网 发布:matlab mac安装教程 编辑:程序博客网 时间:2024/06/02 05:30
这个题是给你一个矩阵,让你判断该矩阵是否可经过每层转换,转换成标准矩阵。
思路:
逐层判断即可~算模拟吧~
代码:
#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=1001;int a[maxn][maxn],b[maxn][maxn],numa[maxn*maxn],numb[maxn*maxn];int main(){ int n,cas=1; while(scanf("%d",&n)&&n) {for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) {scanf("%d",&a[i][j]);b[i][j]=(i-1)*n+j; }int ans=1;for(int c=1;c<=(n+1)/2;c++){ int k=1; for(int i=c;i<=n+1-c;i++) {numa[k]=a[c][i];numb[k++]=b[c][i]; } for(int i=c+1;i<=n+1-c;i++) {numa[k]=a[i][n+1-c];numb[k++]=b[i][n+1-c]; } for(int i=n-c;i>=c;i--) {numa[k]=a[n+1-c][i];numb[k++]=b[n+1-c][i]; } for(int i=n-c;i>=c+1;i--) {numa[k]=a[i][c];numb[k++]=b[i][c]; } int st=0; for(int i=1;i<k;i++)if(numa[i]==numb[1]){ st=i; break;} int cur=1; for(int i=st;i<k;i++) {if(numa[i]!=numb[cur++]){ ans=0; break;} } for(int i=1;i<st;i++) {if(numa[i]!=numb[cur++]){ ans=0; break;} } if(!ans)break;}if(!ans) printf("%d. NO\n",cas++);else printf("%d. YES\n",cas++); } return 0;}
- POJ 3509 Rotating Rings
- POJ-3509-Rotating Rings
- Rotating Rings
- poj3509 Rotating Rings
- poj 2949Word Rings
- poj 3335 Rotating Scoreboard
- POJ 3335 Rotating Scoreboard
- poj 3335 Rotating Scoreboard
- POJ 3335 Rotating Scoreboard
- POJ 3335 Rotating Scoreboard
- poj 3335 Rotating Scoreboard
- POJ 3335 Rotating Scoreboard
- poj 3335 Rotating Scoreboard
- Rotating Scoreboard POJ
- Rings
- POJ 1237 The Postal Worker Rings Once
- POJ 1237 The Postal Worker Rings Once
- POJ--2924[Word Rings] (二分+SPFA判正环)
- 记录我的大学
- java学习5
- UNIX环境高级编程读书笔记 第一部分 文件 (第3章 文件I/O)
- Java中的集合类HashMap的应用
- POJ-3623-Best Cow Line, Gold
- POJ-3509-Rotating Rings
- UML类图关系大全
- POJ-3157-Java vs C++
- Notepad++右键菜单
- 程序员的四种类型
- POJ-3061-Subsequence
- java与设计模式之适配器模式
- zlib简单示例代码,compress、uncompress
- 如何为 Linux 卸载 Java