信息学奥赛一本通 1120:同行列对角线的格 | OpenJudge NOI 1.8 02:同行列对角线的格子
【题目链接】
ybt 1120:同行列对角线的格
OpenJudge NOI 1.8 02:同行列对角线的格子
【题目考点】
1. 二维数组
【解题思路】
解法1:移动焦点
设焦点起始位置,每移动一次,输出一次当前位置。
- 在输出左上右下斜线时,先找到输入位置所在左上右下斜线中最左上方的位置,焦点从这个位置开始不断向右下移动
- 在输出右上左下斜线时,先找到输入位置所在右上左下斜线中最右上方的位置,焦点从这个位置开始不断向左下方移动
解法2:遍历矩阵
遍历整个矩阵,输出其中满足条件的位置
同一行:行坐标相同
同一列:列坐标相同
同一左上右下斜线:行列坐标差值相同
同一右上左下斜线:行列坐标加和相同
【注意】最后一个要求是从左下到右上,行坐标从大到小遍历,列坐标从小到大遍历
【题解代码】
解法1:移动焦点
#include <bits/stdc++.h>
using namespace std;
int main()
{int n, sx, sy, x, y, a[15][15];//(sx,sy)输入的位置 (x,y)焦点位置 scanf("%d %d %d", &n, &sx, &sy);for(int j = 1; j <= n; ++j)//输出同一行的格子 printf("(%d,%d) ", sx, j);putchar('\n');//换行 for(int i = 1; i <= n; ++i)//输出同一列上的格子 printf("(%d,%d) ", i, sy);putchar('\n');x = sx, y = sy;//寻找与(sx,sy)在同一左上右下斜线上,左上方的第一个位置 while(x > 1 && y > 1)//找左上方的格子 x--, y--;//向左上方移动 //此时x, y就是左上右下斜线上左上角第一个位置for(; x <= n && y <= n; ++x, ++y)//输出左上右下斜线上的格子 printf("(%d,%d) ", x, y);putchar('\n');x = sx, y = sy;//寻找与(sx,sy)在同一左下右上斜线上,左下方的第一个位置 while(x < n && y > 1) //找左下方的格子 x++, y--;//向左下方移动 //此时x,y就是左下右上斜线上左下角第一个位置for(; x >= 1 && y <= n; --x, ++y)//输出左下右上斜线上的格子 printf("(%d,%d) ", x, y);return 0;
}
解法2:遍历矩阵
#include <bits/stdc++.h>
using namespace std;
int main()
{int n, si, sj, a[15][15];//(si,sj)输入的位置 scanf("%d %d %d", &n, &si, &sj);for(int j = 1; j <= n; ++j)//输出同一行的格子 printf("(%d,%d) ", si, j);putchar('\n');//换行 for(int i = 1; i <= n; ++i)//输出同一列上的格子 printf("(%d,%d) ", i, sj);putchar('\n');for(int i = 1; i <= n; ++i)//行号 从左上到右下 for(int j = 1; j <= n; ++j)//列号 if(i - j == si - sj)//在同一左上右下斜线 printf("(%d,%d) ", i, j);putchar('\n');for(int i = n; i >= 1; --i)//行号 从左下到右上 for(int j = 1; j <= n; ++j)//列号 if(i + j == si + sj)//在同一左下右上斜线 printf("(%d,%d) ", i, j);putchar('\n');return 0;
}
信息学奥赛一本通 1120:同行列对角线的格 | OpenJudge NOI 1.8 02:同行列对角线的格子相关推荐
- 信息学奥赛一本通 1017:浮点型数据类型存储空间大小 | OpenJudge NOI 1.2 02
[题目链接] ybt 1017:浮点型数据类型存储空间大小 OpenJudge NOI 1.2 02:浮点型数据类型存储空间大小 [题目考点] 1. sizeof运算符 sizeof可以求某常量.变量 ...
- 信息学奥赛一本通 1002:输出第二个整数 | OpenJudge NOI 1.1 02
[题目链接] ybt 1002:输出第二个整数 OpenJudge NOI 1.1 02:输出第二个整数 [题目考点] 声明多个int型变量 cin输入变量 cin 后面用>>分隔要输入的 ...
- 信息学奥赛一本通 1171:大整数的因子 | OpenJudge NOI 1.6 13:大整数的因子
[题目链接] ybt 1171:大整数的因子 OpenJudge NOI 1.6 13:大整数的因子 [题目考点] 1. 高精度 考察:高精模低精 高精度计算讲解 [解题思路] 先把参与运算的数字当成 ...
- 信息学奥赛一本通 1149:最长单词2 | OpenJudge NOI 1.13 16
[题目链接] ybt 1149:最长单词2 OpenJudge NOI 1.13 16:最长单词2 [题目考点] 1. 字符串遍历 2. 处理多个字符串 3. while(cin >> - ...
- 信息学奥赛一本通 1148:连续出现的字符 | OpenJudge NOI 1.9 11
[题目链接] ybt 1148:连续出现的字符 OpenJudge NOI 1.9 11:连续出现的字符 [题目考点] 1. 字符串处理 2. 数值统计 [题解代码] 解法1:比较相邻字符 #incl ...
- 信息学奥赛一本通 1145:字符串p型编码 | OpenJudge NOI 1.7 31:字符串p型编码
[题目链接] ybt 1145:字符串p型编码 OpenJudge NOI 1.7 31:字符串p型编码 [题目考点] 1. 字符串处理 [解题思路] 遍历字符串,设置变量curNum表示当前关注的数 ...
- 信息学奥赛一本通 1143:最长最短单词 | OpenJudge NOI 1.7 25
[题目链接] ybt 1143:最长最短单词 OpenJudge NOI 1.7 25:最长最短单词 [题目考点] 1. 字符串处理 [解题思路] 思路1:将字符串分解为多个单词,而后求出各个单词的长 ...
- 信息学奥赛一本通 1137:加密的病历单 | OpenJudge NOI 1.7 12
[题目链接] ybt 1137:加密的病历单 OpenJudge NOI 1.7 12:加密的病历单 [题目考点] 1. 字符串处理 [解题思路] 加密过程有三个工序:循环左移,逆序存储,大小写反转. ...
- 信息学奥赛一本通 1121:计算矩阵边缘元素之和 | OpenJudge NOI 1.8 03:计算矩阵边缘元素之和
[题目链接] ybt 1121:计算矩阵边缘元素之和 OpenJudge NOI 1.8 03:计算矩阵边缘元素之和 [题目考点] 1. 二维数组 [解题思路] 解法1:遍历外圈 一个m行n列的矩阵, ...
最新文章
- 智能家居隐私问题再遭热议:涉案设备中的数据究竟受不受保护?
- jQuery学习——表单
- java模拟器apk闪退_急,求帮助,eclipse生成apk安装以后闪退
- jquery_pagination分页插件的使用
- AC_CHECK_LIB的工作原理
- 给一个div innerhtml 后 没有内容显示的问题_实战:仅用18行JavaScript构建一个倒数计时器...
- 2021年6月10日08点53分 SQL注入
- bigemap软件优势
- 程序设计c语言基础选择题填空题(含答案)
- gem5——向简单脚本中添加缓存
- 树的遍历 ALDS1_7_C: Tree Walk
- Excel 行或列合并工具 Concatenate 实现姓和名组合
- WSAData小说明(转)
- ppt技巧一四步法调整段落排版
- 【编程不良人】快速入门SpringBoot学习笔记03--整合MyBatis、本地测试、热部署工具、日志处理、面向切面编程、文件上传、文件下载
- 浅谈嵌入式MCU软件开发之startup过程详解(从复位向量到main函数之前的准备工作)
- 大学生python心得1000字_大学生心得体会1000字
- 【嵌入式Linux应用开发】温湿度监控系统——绘制温湿度折线图
- 腾讯安全发布iOA SaaS版产品,为企业提供安全访问服务
- [SpringBoot系列]基础过渡与夯实(基础配置)