2014-12-2 Z字形扫描
2024-10-21 13:43:24
问题描述
试题编号: | 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;
}
最新文章
- Apache漏洞修复
- 【GoLang】golang 的精髓--流水线,对现实世界的完美模拟
- Android自学指导
- 动态的计算行高 加载数据源 有多少显示多少 tableView 包含 colloctionView 显示复杂的界面写法
- 3163: [Heoi2013]Eden的新背包问题
- Quartz.net的cron表达式
- studio_ 优化Android Studio 启动、编译和运行速度?
- scanf()/getchar()和gets()深入分析
- dispatch_group_async可以实现监听一组任务是否完成,完成后得到通知执行其他的操作。这个方法很有用,比如你执行三个下载任务,当三个任务都下载完成后你才通知界面说完成的了
- html embed用法
- css hack 兼容性
- spring注解开发中常用注解以及简单配置
- 从.Net版本演变看String和StringBuild性能之争
- python3.6+linux服务器+django1.11连接MYSQL数据库
- 十一、Spring Boot 集成Shiro和CAS
- [置顶]
 xamarin Tablayout+Viewpager+Fragment顶部导航栏
- spring-oauth-server实践:授权方式四:client_credentials 模式下access_token的产生
- Jackson将对象转换为json字符串时,设置默认的时间格式
- 设计模式-行为型模式,python 中介者模式
- 如何通过automator创建自动化备份任务?
热门文章
- vue3 + element plus 使用字节跳动图标
- 【Java SE进阶】Day01 Object类、日期时间类、System类、StringBuilder类、包装类
- 【Hadoop学习】上:组成介绍、生态体系、环境准备、不同运行模式测试
- cs231n__3. LostFunction
- gitlab修改代码提交后显示中文名称
- MongoDB 索引原理与索引优化
- 【转载】EXCEL VBA 关于范围选择代码集
- 算法之SPFA的前置:Bellman-Ford算法
- 算法之Floyd-Warshall算法【c++】【图论】【最短路】
- Ubuntu snap 下载慢