BASIC-25VIP试题 回形取数
来源:互联网 发布:捷克 语言 知乎 编辑:程序博客网 时间:2024/05/17 23:48
/*
问题描述
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入格式
输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
输出格式
输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
样例输入
3 3
1 2 3
4 5 6
7 8 9
样例输出
1 4 7 8 9 6 3 2 5
样例输入
3 2
1 2
3 4
5 6
样例输出
1 3 5 6 4 2
*/
#include <stdio.h>
void shuru( int , int n , int [][n] );
void hxqs( int , int n , int [][n] );
int main(void)
{
int m , n ;
scanf("%d%d",&m , &n );
int s[m][n];
shuru(m , n, s);
hxqs(m , n , s );
return 0;
}
void shuru( int m , int n , int s[][n] )
{
int i , j ;
for( i = 0 ;i < m ; i ++)
{
for( j = 0 ; j < n ; j ++)
{
scanf("%d", &s[i][j]);
}
}
}
void hxqs( int m , int n , int s[][n])
{
int hx = 0 ; //计算 个数
int x= -1 , y = 0 ; // 会回型位置
while(hx < m * n)
{
while(x + 1 < m &&s[x + 1][y] != -1) // 竖直向下
{
printf("%d ", s[++x][y]);
s[x][y] = -1;
hx ++;
}
while(y + 1 < n && s[x][y + 1] != -1) // 左
{
printf("%d ", s[x][++y]);
s[x][y] = -1;
hx ++;
}
while(x - 1 >= 0 && s[x - 1][y] != -1) //上
{
printf("%d ", s[--x][y]);
s[x][y] = -1;
hx ++;
}
while(y - 1 >= 0 && s[x][y - 1] != -1) // 右
{
printf("%d ", s[x][--y]);
s[x][y] = -1;
hx ++;
}
}
}
问题描述
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入格式
输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
输出格式
输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
样例输入
3 3
1 2 3
4 5 6
7 8 9
样例输出
1 4 7 8 9 6 3 2 5
样例输入
3 2
1 2
3 4
5 6
样例输出
1 3 5 6 4 2
*/
#include <stdio.h>
void shuru( int , int n , int [][n] );
void hxqs( int , int n , int [][n] );
int main(void)
{
int m , n ;
scanf("%d%d",&m , &n );
int s[m][n];
shuru(m , n, s);
hxqs(m , n , s );
return 0;
}
void shuru( int m , int n , int s[][n] )
{
int i , j ;
for( i = 0 ;i < m ; i ++)
{
for( j = 0 ; j < n ; j ++)
{
scanf("%d", &s[i][j]);
}
}
}
void hxqs( int m , int n , int s[][n])
{
int hx = 0 ; //计算 个数
int x= -1 , y = 0 ; // 会回型位置
while(hx < m * n)
{
while(x + 1 < m &&s[x + 1][y] != -1) // 竖直向下
{
printf("%d ", s[++x][y]);
s[x][y] = -1;
hx ++;
}
while(y + 1 < n && s[x][y + 1] != -1) // 左
{
printf("%d ", s[x][++y]);
s[x][y] = -1;
hx ++;
}
while(x - 1 >= 0 && s[x - 1][y] != -1) //上
{
printf("%d ", s[--x][y]);
s[x][y] = -1;
hx ++;
}
while(y - 1 >= 0 && s[x][y - 1] != -1) // 右
{
printf("%d ", s[x][--y]);
s[x][y] = -1;
hx ++;
}
}
}
阅读全文
0 0
- BASIC-25VIP试题 回形取数
- BASIC-14VIP试题 时间转换
- BASIC-15VIP试题 字符串对比
- BASIC-16VIP试题 分解质因数
- BASIC-17VIP试题 矩阵乘法
- BASIC-18VIP试题 矩形面积交
- BASIC-19VIP试题 完美的代价
- BASIC-20VIP试题 数的读法
- BASIC-21VIP试题 Sine之舞
- BASIC-22VIP试题 FJ的字符串
- BASIC-23VIP试题 芯片测试
- BASIC-26VIP试题 报时助手
- BASIC-28VIP试题 Huffuman树
- BASIC-29VIP试题 高精度加法
- BASIC-30VIP试题 阶乘计算
- BASIC-15字符串对比字符串 大小写VIP试题
- BASIC-24VIP试题 龟兔赛跑预测
- BASIC-27VIP试题 2n皇后问题
- Spring使用p名称空间配置属性
- 使用JdbcTemplate来获取数据库表字段对应的数据
- Python 2.7 执行某一程序并获取PID
- Python3 初学实践案例(6)终极 CLI 密码生成程序实现
- Nginx安装与使用
- BASIC-25VIP试题 回形取数
- 【干货】2017年深度学习必读31篇论文(附论文下载地址)
- Ubuntu下matplotlib绘图中文乱码问题的解决
- ES6黑科技实践--proxy,reflect
- 数据库入门
- Coursera ML笔记
- 电子发票税费计算问题
- 2.4 创建新的数据类型:类
- BASIC-26VIP试题 报时助手