CCF NOI1046 打印方阵
问题链接:CCF NOI1046 打印方阵。
时间限制: 1000 ms 空间限制: 262144 KB
题目描述
打印一个n*n的数字方阵,例如n=4时:(n<=100)
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
输入
输入n。
输出
输出n*n的方阵。
样例输入
4
样例输出
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
数据范围限制
问题分析
这个问题是要将1-n*n的数,按照一定规律(原题没有详细说明,只是给出了一个样例)填入n*n的矩阵中。这个规律需要自己看出来。
这个问题的关键是,如何1-n*n的数与二维下标的映射关系,找出规律问题就简单了。
程序说明
这里除了给出上述思路的C语言程序外,另外给出一个其他思路的C++语言程序,逻辑上更加易懂。
要点详解
- 虽然题意中给的是常量的矩阵大小,可以用字符常量来定义数组,但是用宏来定义一个符号常量更为合理。
- 1-n*n的数与二维下标的映射关系。一些映射关系用数学函数表达是困难的,而用程序来描述并不困难。
- 矩阵是数学上的概念,二维数组是程序中的概念。编写程序时,矩阵可以用二维数组来存储和表示。
参考链接:CCF201412-2 Z字形扫描(100分) 。
100分通过的C语言程序:
#include <stdio.h>#define N 100int a[N][N];int main(void)
{int n, i, j, val, n1;// 输入nscanf("%d", &n);// 设置左上三角的值val = 1;for(i=0; i<n; i++)for(j=0; j<=i; j++) {if(i % 2)a[i - j][j] = val;elsea[j][i - j] = val;val++;}// 设置右下三角的值val = n * n;n1 = n - 1;for(i=0; i<n1; i++)for(j=0; j<=i; j++) {if(i % 2)a[n1 - i + j][n1 - j] = val;elsea[n1 - j][n1 - i + j] = val;val--;}// 输出结果for(i=0; i<n; i++) {for(j=0; j<n; j++)printf("%d ", a[i][j]);printf("\n");}return 0;
}
100分通过的C++语言程序:
#include <iostream>using namespace std;const int SOUTH = 0;
const int EAST = 1;
const int SOUTHEAST = 2;
const int NORTHWEST = 3;struct {int drow;int dcol;
} direct[] = { { 1, 0 }, { 0, 1 }, { -1, 1 }, { 1, -1 } };const int N = 100;int a[N][N];int main()
{int n, val=1;cin >> n;// Z字形输出结果int row = 0, col = 0, next = SOUTH;a[row][col] = val;while (row != n - 1 || col != n - 1) {val++;row += direct[next].drow;col += direct[next].dcol;a[row][col] = val;if (next == SOUTH && col == 0)next = SOUTHEAST;else if (next == SOUTH && col == n - 1)next = NORTHWEST;else if (next == EAST && row == 0)next = NORTHWEST;else if (next == EAST && row== n - 1)next = SOUTHEAST;else if (next == SOUTHEAST && col == n - 1)next = SOUTH;else if (next == SOUTHEAST && row == 0)next = EAST;else if (next == SOUTHEAST&& row != 0)next = SOUTHEAST;else if (next == NORTHWEST && row == n - 1)next = EAST;else if (next == NORTHWEST&& col !=0)next = NORTHWEST;else if (next == NORTHWEST && col== 0)next = SOUTH;}for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++)cout << a[i][j] << " ";cout << endl;}return 0;
}
CCF NOI1046 打印方阵相关推荐
- Contest3117 - 2021级新生个人训练赛第24场_问题 E: 打印方阵
问题 E: 打印方阵 时间限制: 1.000 Sec 内存限制: 128 MB题目描述 下面这样的方阵很有规律,称为蛇形方阵.例如3*3的: 1 2 3 6 5 4 7 8 9 现在给定边长,输出相应 ...
- CCF201412-2 Z字形扫描(解法二)(100分)
试题编号: 201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag ...
- CCF201412-2 Z字形扫描(解法二)(100分)【废除!!!】
试题编号: 201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag ...
- CCF201412-2 Z字形扫描(100分)
试题编号: 201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag ...
- 编程,打印n*n(n<10)的螺旋方阵。
该文针对C++数组初学者,本篇主要运用二维数组以及循环,条件语句的知识来解决问题. 目录 1.题目 2.思路 3.完整代码 题目: 编程,打印n*n(n<10)的螺旋方阵. 思路: 首先对螺旋方 ...
- python从文件中读取数据_Python3 中把txt数据文件读入到矩阵中的方法
下面为大家分享一篇Python3 中把txt数据文件读入到矩阵中的方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 1.实例程序: ''' 数据文件:2.txt内容:(以空格分开每个数据) ...
- python以垂直方式输出_python学习笔记
Author: maddock Date: 2015-03-15 21:42:01 (暂时没有整理) python json文件处理 #coding:utf-8 importjson#data = [ ...
- c 语言矩阵求逆算法,矩阵的逆 C 语言 算法一
#include #include voidmain() {inti,j;intdimension;double deterValue=1;double **array,**deterArray, * ...
- BUPT计导第三次机考12.8数组+二分答案详解
坐标:BUPT:OJ:Excited OJ %%%AK大佬,感觉这次AK的人均OI选手-- 还是刷题不够Orzzzz A.阿尔法乘积 注意题目要求:非零的数相乘 注意数据范围:应为long long而 ...
最新文章
- 卷积神经网络(CNN)新手指南
- Linux开关机时长查看
- java写左侧导航栏界面,jQuery----左侧导航栏面板切换实现
- potential things for recommendation
- 自反访问控制列表(ACL)
- NOIP模拟测试9「随·单·题」
- mysql5.6 load_MySQL 5.6 dump/load buffer pool实验
- bytes数组转string指定编码_好程序员Java学习路线分享Java基础之string
- 关于求XXX.class.getResource(xxx).getPath()的用法
- Bailian4101 晶矿的个数【DFS】
- TMS320C55x的寄存器
- linux screen会话命令
- 【Excel】设置自定义单元格格式
- 西普CTF训练(programe部分分析)
- win7系统无法正常启动
- 个人博客系统中的评论功能设计
- Windows xp 定时关机命令 [转贴]
- IDEA使用破解补丁永久激活
- JavaScript实现涂鸦笔
- 作业Android自我介绍
热门文章
- dojo的TabContainer竖排摆放tab标签
- AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案定制开发暨百度高德地图Unity插件SDK
- 页游中的十大经典游戏题材
- 在Linux上安装Mysql 以及 涉及问题
- Spark重要概念提出时间戳和原因
- linux安装mysql5.6rpm_centos6.5 下安装mysql5.6,rpm方式
- 修改云服务器上文件夹只读属性,求助:为什么我电脑里的文件夹会自动变为只读属性?...
- LeetCode 144. 二叉树的前序遍历(递归)(迭代)(颜色标记法)
- LeetCode 120. 三角形最小路径和(动态规划)
- 海思3519A配置NFS文件系统(永久)