当前位置: 首页 > news >正文

建网站淄博企业门户网站建设案例

建网站淄博,企业门户网站建设案例,简述建设网站的具体步骤,公司做彩票网站违法吗《信息学奥赛一本通》第99题:同行列对角线的格 题目描述 输入三个自然数 NNN,iii,jjj(1≤i≤n1 \le i \le n1≤i≤n,1≤j≤n1 \le j \le n1≤j≤n),输出在一个 NNN \times NNN 格的棋盘中&#…

《信息学奥赛一本通》第99题:同行列对角线的格

题目描述
输入三个自然数 NNNiiijjj1≤i≤n1 \le i \le n1in1≤j≤n1 \le j \le n1jn),输出在一个 N×NN \times NN×N 格的棋盘中(行列均从 111 开始编号),与格子 (i(i(ij)j)j) 同行、同列、同一对角线的所有格子的位置。
如:n=4n=4n=4i=2i=2i=2j=3j=3j=3 表示了棋盘中的第二行第三列的格子,
n=4n=4n=4i=2i=2i=2j=3j=3j=3 时,输出的结果是:(2,1)(2,2)(2,3)(2,4)(2,1)(2,2)(2,3)(2,4)(2,1)(2,2)(2,3)(2,4) 同一行上格子的位置。
(1,3)(2,3)(3,3)(4,3)(1,3)(2,3)(3,3)(4,3)(1,3)(2,3)(3,3)(4,3) 同一列上格子的位置。
(1,2)(2,3)(3,4)(1,2)(2,3)(3,4)(1,2)(2,3)(3,4) 左上到右下对角线上的格子的位置。
(4,1)(3,2)(2,3)(1,4)(4,1)(3,2)(2,3)(1,4)(4,1)(3,2)(2,3)(1,4) 左下到右上对角线上的格子的位置。
输入格式
一行,三个自然数 NNNiiijjj,相邻两个数之间用单个空格隔开 (1≤N≤10)(1 \le N \le 10)(1N10)
输出格式
第一行:从左到右输出同一行格子位置;
第二行:从上到下输出同一列格子位置;
第三行:从左上到右下输出同一对角线格子位置;
第四行:从左下到右上输出同一对角线格子位置。
其中每个格子位置用如下格式输出:(x,y)(x,y)(x,y)xxx 为行号,yyy 为列号,采用英文标点,中间无空格。相邻两个格子位置之间用单个空格隔开。
输入输出样例 #1
输入 #1
4 2 3
输出 #1
(2,1) (2,2) (2,3) (2,4)
(1,3) (2,3) (3,3) (4,3)
(1,2) (2,3) (3,4)
(4,1) (3,2) (2,3) (1,4)

大家好,我是莫小特。
这篇文章给大家带来《信息学奥赛一本通》中的第99题:同行列对角线的格。

image.png

一、题目描述

洛谷的题号是:B2100 同行列对角线的格

image.png

二、题意分析

这道题是信息学奥赛一本通练习题的第 99 题。

根据输入格式的描述,输入有三个自然数,包含 N、i、j,数据范围:(1≤N≤10)(1 \le N \le 10)(1N10),使用 int 类型。

int N;
cin>>N;

接下来分析题意,根据题目意思,需要按要求输出相应的格式。

输出的第一行从左到右输出同一行格子的位置,也就是第 i 行所有格子的位置,第 i 行的特点是行的数据相同,而列的位置从 1 遍历到 N,使用 for 循环实现列的输出,注意输出时,将括号加上,最后一个括号要加上空格。

for(int a=1;a<=N;a++)
{cout<<"("<<i<<","<<a<<") ";	
}

接下来需要换行,再输出下一组数据。

cout<<endl;

第二行从上到下输出同一列格子位置,具有的特点是:列相同,而行从 1 遍历到 N。

for(int b=1;b<=N;b++)
{cout<<"("<<b<<","<<j<<") ";	
}

换行,之后再输出第三行。

第三行的要求是,从左上到右下输出同一对角线格子位置,具体的规则如下图,研究发现如果是对角线的话,行和列的值都相等。

image.png

但如果是其他行的话,研究发现,行和列相减等于一个固定值,也就是:i−ji-jij,可以画出下图,对其进行分析。

image.png

所以代码可写:

for(int c=1;c<=N;c++)
{for(int d=1;d<=N;d++){if(c-d==i-j){cout<<"("<<c<<","<<d<<") ";}}
}
cout<<endl;//一定要加换行

换行之后,来研究第四行:从左下到右上输出同一对角线格子位置,要注意哦,是从左下到右上,需要用倒序实现。

而行列的关系是,行和列相加等于一个固定值。

image.png

代码可写:

for(int c=N;c>=1;c--)
{for(int d=1;d<=N;d++){if(c+d==i+j){cout<<"("<<c<<","<<d<<") ";}}
}

按照样例输入数据,验证一下。

image.png

数据验证正确,提交到网站测评。

image.png

验证通过~

三、完整代码

该题的完整代码如下:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{int N,i,j;cin>>N>>i>>j;for(int a=1;a<=N;a++){cout<<"("<<i<<","<<a<<") ";	} cout<<endl;for(int b=1;b<=N;b++){cout<<"("<<b<<","<<j<<") ";	} cout<<endl;for(int c=1;c<=N;c++){for(int d=1;d<=N;d++){if(c-d==i-j){cout<<"("<<c<<","<<d<<") ";}}} cout<<endl;for(int c=N;c>=1;c--){for(int d=1;d<=N;d++){if(c+d==i+j){cout<<"("<<c<<","<<d<<") ";}}}return 0;
}

四、总结

这道题考察的是棋盘格坐标规律的分析。

遍历整个棋盘,输出符合条件的点。

1、同行输出:行号固定,列号从 1→N1 \to N1N(i,1)(i,2)…(i,N)(i,1)(i,2)\dots(i,N)(i,1)(i,2)(i,N)

2、同列输出:列号固定,行号从 1→N1 \to N1N(1,j)(2,j)…(N,j)(1,j)(2,j)\dots(N,j)(1,j)(2,j)(N,j)

3、主对角线(左上→右下):满足条件 x−y=i−jx-y=i-jxy=ij,即行号减列号等于常数;

4、副对角线(左下→右上):满足条件 x+y=i+jx+y=i+jx+y=i+j,即行号加列号等于常数;

为了顺序正确(左下到右上),可以从大行号向小行号遍历;

5、关键点

输出格式严格要求 (x,y),元素之间一个空格,每一组结果独占一行,数据范围很小(N≤10N \leq 10N10),直接双重循环即可。

---end---

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、关注我哦!
如果有更好的方法也可以在评论区评论哦,我都会看哒~

我们下集见~

http://www.dtcms.com/a/515423.html

相关文章:

  • C primer plus (第六版)第十一章 编程练习第11题
  • 国内十大网站制作公司手机壁纸网站源码
  • ThreeJS曲线动画:打造炫酷3D路径运动
  • 国产三维CAD工程图特征、公母唇缘有何提升?| 中望3D 2026亮点速递(8)
  • MEMS与CMOS的3D集成技术研究进展
  • 打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第四天)
  • 做的最好的网站怎样如何做网站赚钱
  • GitHub 热榜项目 - 日榜(2025-10-22)
  • 论文阅读笔记excel的美化
  • Llama-2-7b在昇腾NPU上的六大核心场景性能基准报告
  • Katalon AI 之StudioAssist 偏好设置
  • Android虚拟机配置完整指南:从零开始解决常见问题
  • 本地网站搭建软件丰台石家庄网站建设
  • 智能密码钥匙检测操作与检测条件对应表
  • Bazel下载和安装教程(附安装包)
  • [Java数据结构和算法] 详解 TreeMap 和 TreeSet
  • 光影筑梦 温暖同行 第三届粤港澳大湾区公益网络微电影大赛展映及颁奖礼圆满落幕
  • 直流滤波器 保障直流系统稳定运行的关键
  • 怎么把自己做的网站发布怎么查看什么公司做的网站
  • 数学建模竞赛模板合集(含latex与word模板):国赛、美赛、研赛、其他
  • 本科/硕士毕业论文格式修改大全|word格式修改
  • MySQL5.7一键升级到MySQL8.0
  • 广州网站建设天维知名外贸网站建设公司
  • 论文阅读:ICML 2025 Adversarial Reasoning at Jailbreaking Time
  • STM32USB学习
  • coze使用记录
  • java面试-0220-HashSet、LinkedHashSet、TreeSet实现?和ArrayList区别?
  • 2、WordPress使用--安装gutenverse插件
  • 南和县建设局黄页网站设计之窗
  • NetworkX 最短路径算法选型图