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

【套题】大沥2019年真题——第5题

05.魔术数组

题目描述

一个 N 行 N 列的二维数组,如果它满足如下的特性,则成为“魔术数组”:
1、从二维数组任意选出 N 个整数。
2、选出的 N 个整数都是在不同的行且在不同的列。
3、在满足上述两个条件下,任意选出来的 N 个整数的总和都是相等的。
例如,这是一个 4×4 的二维数组:

140 80 160 60
90 30 110 10
100 40 120 20
130 70 150 50

你会发现,任意从里面选出 4 个来自不同行和不同列的整数,它们的总和都是 340,所以这个二维数组是 “魔术数组”。
现在给出整数 N,给出二维数组第一行的 N 个整数,再给出二维数组的左上角到右下角的对角线上的 N 个 整数。
你的任务是根据给出的数据,构造满足题意的“魔术数组”。
如果有多种方案,输出任意一种方案, 如果没有方案,输出-1。

输入格式
第一行,一个整数 N。 1 <= N <= 30。
第二行,N 个整数,表示魔术数组的第一行的 N 个整数。每个整数范围[-1000,1000]。
第三行,N 个整数,表示魔术数组的左上角到右下角的对角线上面的。

输出格式
N 行 N 列的二维数组,表示满足题意的“魔术数组”,或者-1。

输入样例

4
140 80 160 60
140 30 120 50

输出样例

140 80 160 60
90 30 110 10
100 40 120 20 
130 70 150 50

题解:仔细观察样例数组,就会发现一个规律:在数组中选取一个矩形,矩形的左下角的元素 = 左上角 + 右下角 - 右上角。用代码就是这样:a[ i ][ j ]=a[ 1 ][ j ]+a[ i ][ i ]-a[ 1 ][ i ]。

#include<bits/stdc++.h>
using namespace std;
int n,a[50][50];
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[1][i];}for(int i=1;i<=n;i++){cin>>a[i][i];}for(int i=2;i<=n;i++){for(int j=1;j<=n;j++){if(i==j) continue;a[i][j]=a[1][j]+a[i][i]-a[1][i];}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;}return 0;
}

 

http://www.lryc.cn/news/468499.html

相关文章:

  • 上传Gitee仓库流程图
  • 二叉树相关OJ题 — 第一弹
  • 【学习笔记】RFID
  • 自动化部署-01-jenkins安装
  • AI工具大爆发,建议每个都使用收藏
  • Mybatis之参数处理
  • windows内核探索--打印windows的GDT表(全局描述符表)
  • 【ChatGPT】让ChatGPT帮助进行头脑风暴与创意生成
  • 大数据处理随堂测试
  • 2024最新pycharm安装教程及基本使用(超详细,新手小白必看)
  • 三国杀钓鱼自动化
  • 在pycharm中使用sqllite
  • Linux——文件操作
  • 数据结构 ——— 数组栈oj题:有效括号
  • Character AI被起诉!14岁青少年自杀,AI陪伴何去何从
  • CSS3 动画相关属性实例大全(三)(columns、filter、flex、flex-basis 、flex-grow、flex-shrink属性)
  • 中国最厉害的思想家改名大师颜廷利:以诚信为基,塑企业信誉
  • Python 代码实现用于进行水质模拟和优化加氯量
  • 挖矿病毒来势汹汹
  • 国产数据库的蓝海在哪?
  • MySQL~表的操作(创建表,查看表,修改表,删除表)
  • 多线程加锁与手搓智能指针实践
  • 3180. 执行操作可获得的最大总奖励 I
  • react18中的jsx 底层渲染机制相关原理
  • Spring Boot 实现文件上传下载功能
  • ArcGIS 10.8 安装教程(含安装包)
  • 【小白学机器学习16】 概率论的世界观2: 从正态分布去认识世界
  • Python 爬虫项目实战:爬取某云热歌榜歌曲
  • HCIP-HarmonyOS Application Developer 习题(十八)
  • 操作系统学习笔记2.3互斥