第二十三天打卡

第一题题目:

在一次数学课上,明明的老师讲了一种非常有趣的方阵,称之为三阶魔方阵。

它是一个三行三列,由1、2、3、......8、9,九个数字共同构成,且它每行、每列、两对角线之和均相等,于是一个合法的三阶魔方阵就形成了以下的方阵:

8 1 6

3 5 7

4 9 2

富有钻研精神的明明回家后,马上就对三阶魔方阵进行研究。

他总结出了5条n阶魔方阵的规律(n为奇数),如下:

(1) 将"1"放在第一行(最上面一行)中间一列;

(2) 从"2"开始直到n*n为止各数依次按下列规则存放:每一个数存放的行的行数比前一个数的行数减1,每一个数存放的列的列数比前一个数的列数加1,即前一个数的右上方。

(3) 如果上一数的行数为1,则下一个数的行数为n(指最下面一行);

(4) 当上一个数的列数为n时,下一个数的列数应为1(指最左一列);

(5) 如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。

有了以上的方法,明明就可以轻易地构造出任意的n阶魔方阵。

个人总结:

1.要提前设置一个行和列的临时变量,用于在所找位置有数时返回上一数值的位置。

代码:

#include<iostream>

#include<vector>

using namespace std;

int main()

{

int n;

while (cin >> n)

{

vector<vector<int>> magic(n, vector<int>(n, 0));

magic[0][n / 2] = 1;

int hang = 0, lie = n / 2;

for (int num = 2; num <= n * n; num++)

{

int pre_hang = hang;

int pre_lie = lie;

hang--;

lie++;

if (hang < 0)

hang = n - 1;

if (lie > n - 1)

lie = 0;

if (magic[hang][lie] == 0)

magic[hang][lie] = num;

else

{

hang = pre_hang + 1;

lie = pre_lie;

if (hang > n + 1)

hang = 0;

magic[hang][lie] = num;

}

}

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

if (j != n - 1)

cout << magic[i][j] << " ";

else

cout << magic[i][j] << endl;

}

}

cout << endl;

}

return 0;

}

第二题题目:

给你一张5行5列的效益表,表中的数字均为大于等于0的整数,要求在这张表中选出5个数字,使这5个数字的和最大。(注:这5个数字分别来自表中的不同行不同列,即同一行只能选择一个数字,同一列也只能选择一个数字。)

个人总结:

1.因为数组较小,我们可以采用多次遍历,每次找到一个最大值,然后将此值所在的行列其他数值都设为-1,再在剩下的数中查找其最大,依次找出五个数,这就是所求的最大值。

2.数组的多重输入没太明白,只会输入一组数据然后返回。

代码:

#include<iostream>

#include<climits>

using namespace std;

int main()

{

int prize[5][5];

int sum = 0;

for (int i = 0; i < 5; i++)

{

for (int j = 0; j < 5; j++)

{

cin >> prize[i][j];

}

}

for (int i = 0; i < 5; i++)

{

int max = INT_MIN;

int hang = 0, lie = 0;

for (int x = 0; x < 5; x++)

{

for (int y = 0; y < 5; y++)

{

if (prize[x][y] != -1 && prize[x][y] > max)

{

max = prize[x][y];

hang = x;

lie = y;

}

}

}

sum += max;

for (int x = 0; x < 5; x++)

{

prize[hang][x] = -1;

}

for (int y = 0; y < 5; y++)

{

prize[y][lie] = -1;

}

}

cout << sum << endl;

return 0;

}

第三题题目:

明明在上学的时候,参加数学兴趣班。在班上,老师介绍了一种非常有趣的方阵,称之为螺旋方阵。该方阵一共由n×n个正整数构成(我们称之为n阶螺旋方阵),即共有n行n列。

方阵中的数字从1开始递增,数字的排序规则是从左上角出发由1开始排序,并按顺时针方向旋进,即先排最外面的一圈,然后排里面的一圈,以此类推,直到排到最后一个数为止。

例如一个4阶的螺旋方阵,一共有4×4=16个正整数构成,数字从1递增到16,最后排出来的方阵如下:

1 2 3 4

12 13 14 5

11 16 15 6

10 9 8 7

明明回家后想自己动手构造这样的螺旋方阵。他从n=1开始构造,但是他发现当n越来越大时,螺旋方阵的复杂性就越高,然后构造出来的方阵就越容易出错。为了降低构造方阵的出错率,提高构造速度,明明就求助于你,请你帮他写一个程序,来构造螺旋方阵。 明明的问题可以归结为:给你一个正整数n,请你按题目描述中所述的方法,构造出n阶的螺旋方阵。

个人总结:

1.设置上下左右的边界,每放完一行或者一列就对其收缩,直到缩到中心位置。

代码:

#include<iostream>

#include<vector>

using namespace std;

int main()

{

int n;

while (cin >> n)

{

int num = 1;

vector<vector<int>> rev(n, vector<int>(n, 0));

int top = 0, button = n - 1;

int left = 0, right = n - 1;

while (num <= n * n)

{

for (int i = left; i <= right; i++)

{

rev[top][i] = num;

num++;

}

top++;

for (int j = top; j <= button; j++)

{

rev[j][right] = num;

num++;

}

right--;

for (int i = right; i >= left; i--)

{

rev[button][i] = num;

num++;

}

button--;

for (int j = button; j >= top; j--)

{

rev[j][left] = num;

num++;

}

left++;

}

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

if (j != n - 1)

cout << rev[i][j] << " ";

else

cout << rev[i][j] << endl;

}

}

}

return 0;

}

英语翻译

黑色为个人翻译,红色为机翻正确翻译

①RFID被用于电子标签或者RFID在其他物品上用作于被监视或者追踪的标记。②标签可能被运用到许多的物品上,例如商品、工具、智能手机、电脑、动物或者是人。③目的是为了通过无线电波或者感应信号识别和追踪物品。④一些标签通过无线接收器能够在十米甚至百米开外被检测到。⑤大多数RFID标签包含两个主要部分。⑥一个是用于存储和处理信息的集成电路,调制和调解无线电波频信号和其他特殊部分。⑦另一部分是一个用于接收和传输无线电信号用的天线。

①射频识别(RFID)技术通过在任何被监测或追踪的物体上粘贴电子标签或 RFID 标签来实现应用。②这些标签可应用于任何物体,例如商品、工具、智能手机、电脑、动物,甚至人。③其目的是利用无线电波或传感信号来识别和追踪这些物体。④一些标签可以通过无线阅读器在数十米甚至数百米之外被读取。⑤大多数 RFID 标签至少包含两个主要部分:⑥一个是用于存储和处理信息、调制和解调射频(RF)信号以及执行其他特殊功能的集成电路;⑦另一个则是用于接收和发射无线电信号的天线。

①现在的传感器网络大多都是无线的,并且都是以此被大众所了解的。②一个经典的WSN由在空间上用于协作物理监控或者环境监测自动传感器,例如气温、声音、震动、压力、运动或者污染性质物的检测。③无线传感器网络发展的动机是军事应用,例如战争幸存者搜索。④WSN科技现如今已经被应用到许多工业和民用领域,包含有流程监视和控制、机器健康程度监控,环境和栖息地监测、健康关心和家庭自动化、还有智能交通管控。

①如今的传感器网络大多是无线的,被称为无线传感器网络(WSNs)。②典型的无线传感器网络由空间分布的自主传感器组成,这些传感器协同监测物理或环境条件,例如温度、声音、振动、压力、运动或污染物。③无线传感器网络的发展最初是由军事应用(如战场监视)所推动的。④如今,这项技术已广泛应用于众多工业和民用领域,包括过程监测与控制、设备健康监测、环境与栖息地监测、医疗保健与家庭自动化,以及智能交通控制。

①GPS在1973年由美国空军所创造。②类似的创造也在欧洲、俄罗斯和中国出现。③在1994年之前,一个低级的GPS被制造出来用于民生领域应用,用于提供可靠的位置、导向和时间服务。④对于那些有GPS接收器的人,不管在什么情况下不管有多少人,不管是白天还是黑夜,在世界的任何地方,系统会提供精确的位置和时间信息。

①全球定位系统(GPS)是由美国空军于 1973 年研发的。②类似的技术发展也在欧盟、俄罗斯和中国相继出现。③自 1994 年起,一种降级版的 GPS 开始向民用领域开放,用于提供可靠的定位、导航和授时服务。④对于任何拥有 GPS 接收器的人来说,该系统都能在全球任何地点、任何天气条件下(无论昼夜),为无限多的用户提供精确的位置和时间信息。

英语单词打卡

相关推荐
船神丿男人3 小时前
C++:STL string(一)
开发语言·c++
程序员zgh3 小时前
Linux 内存管理单元 MMU
linux·运维·服务器·c语言·开发语言·c++
Smart-Space4 小时前
将copilot键映射为右control - 参考powertoys实现
c++
Trouvaille ~4 小时前
【Linux】TCP协议基础与连接管理详解:从三次握手到四次挥手
linux·运维·服务器·网络·c++·网络协议·tcp/ip
想做功的洛伦兹力14 小时前
2026/2/12日打卡
开发语言·c++·算法
你撅嘴真丑4 小时前
蛇形填充数组 与 查找最接近的元素
数据结构·c++·算法
blackicexs4 小时前
第四周第四天
数据结构·c++·算法
知无不研5 小时前
c++的设计模式(常用)
c++·观察者模式·单例模式·设计模式·简单工厂模式
fpcc5 小时前
并行编程实战——CUDA编程的并行前缀和
c++·cuda