问题描述

试题编号: 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<stdio.h>
#include<string.h>
int a[501][501];
int n;
int judge(int a)
{
if(1<=a && a<=n)
{
return 1;
}
return 0;
}
int main ()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
}
}
int i=1,j=1;
int cnt=n*n;
while(cnt--)
{
//printf("%d %d ",i,j);
printf("%d ",a[i][j]);
a[i][j]=0; if(i==1&&j==1)
{
j++;
}
else if(judge(i+1) && judge(j-1) && a[i+1][j-1]!=0)
{
i++;
j--;
}
else if(judge(i-1) && judge(j+1) && a[i-1][j+1]!=0)
{
i--;
j++;
}
else if(judge(i+1) && judge(j-1)==0)
{
i++;
}
else if(judge(i-1)==0 && judge(j+1))
{
j++;
}
//注意n的奇偶性 ,分奇偶讨论
else if(judge(i+1)==0 && judge(j-1)==0)
{
j++;
}
else if(judge(i-1) && judge(j+1)==0)
{
i++;
}
else if(judge(i+1)==0 && judge(j-1))
{
j++;
}
else if(judge(i-1)==0 && judge(j+1)==0)
{
i++;
} }
//printf("%d\n",cnt); return 0;
}

  

最新文章

  1. Apache漏洞修复
  2. 【GoLang】golang 的精髓--流水线,对现实世界的完美模拟
  3. Android自学指导
  4. 动态的计算行高 加载数据源 有多少显示多少 tableView 包含 colloctionView 显示复杂的界面写法
  5. 3163: [Heoi2013]Eden的新背包问题
  6. Quartz.net的cron表达式
  7. studio_ 优化Android Studio 启动、编译和运行速度?
  8. scanf()/getchar()和gets()深入分析
  9. dispatch_group_async可以实现监听一组任务是否完成,完成后得到通知执行其他的操作。这个方法很有用,比如你执行三个下载任务,当三个任务都下载完成后你才通知界面说完成的了
  10. html embed用法
  11. css hack 兼容性
  12. spring注解开发中常用注解以及简单配置
  13. 从.Net版本演变看String和StringBuild性能之争
  14. python3.6+linux服务器+django1.11连接MYSQL数据库
  15. 十一、Spring Boot 集成Shiro和CAS
  16. [置顶] xamarin Tablayout+Viewpager+Fragment顶部导航栏
  17. spring-oauth-server实践:授权方式四:client_credentials 模式下access_token的产生
  18. Jackson将对象转换为json字符串时,设置默认的时间格式
  19. 设计模式-行为型模式,python 中介者模式
  20. 如何通过automator创建自动化备份任务?

热门文章

  1. vue3 + element plus 使用字节跳动图标
  2. 【Java SE进阶】Day01 Object类、日期时间类、System类、StringBuilder类、包装类
  3. 【Hadoop学习】上:组成介绍、生态体系、环境准备、不同运行模式测试
  4. cs231n__3. LostFunction
  5. gitlab修改代码提交后显示中文名称
  6. MongoDB 索引原理与索引优化
  7. 【转载】EXCEL VBA 关于范围选择代码集
  8. 算法之SPFA的前置:Bellman-Ford算法
  9. 算法之Floyd-Warshall算法【c++】【图论】【最短路】
  10. Ubuntu snap 下载慢