46数的统计作者: Turbo时间限制: 1s章节: 基本练习数组问题描述在一个有限的正整数序列中有些数会多次重复出现在这个序列中。如序列3121512。其中1就出现3次2出现2次3出现1 次5出现1次。你的任务是对于给定的正整数序列从小到大依次输出序列中出现的数及出现的次数。输入说明第一行正整数n表示给定序列中正整数的个数。第二行是n 个用空格隔开的正整数x代表给定的序列。n10000x1000,000。输出说明若干行每行两个用一个空格隔开的数第一个是数列中出现的数第二个是该数在序列中出现的次数。#include stdio.h int main(){ int n; scanf(%d, n); int arr[n]; for(int i 0; i n; i) scanf(%d, arr[i]); for(int i 0; i n - 1; i){ for(int j i 1; j n; j){ if(arr[i] arr[j]){ int temp arr[i]; arr[i] arr[j]; arr[j] temp; } } } int current arr[0]; int count 1; for(int i 1; i n; i){ if(arr[i] current) count; else{ printf(%d %d\n, current, count); current arr[i]; count 1; } } printf(%d %d\n, current, count); return 0; }47暗恋作者: Turbo时间限制: 1s章节: 基本练习数组问题描述同在一个高中他却不敢去找她虽然在别人看来那是再简单不过的事。暗恋是他唯一能做的事。他只能在每天课间操的时候望望她的位置看看她倾心的动作就够了。操场上的彩砖啊你们的位置就是他们能够站立的地方他俩的关系就像砖与砖之间一样固定无法动摇。还记得当初铺砖的工人将整个操场按正方形铺砖整个操场可视为R行C列的矩阵矩阵的每个元素为一块正方形砖块正方形砖块有两种一种为蓝色另一种为红色。我们定义他和她之间的“爱情指标”为最大纯色正方形的面积请你写一个程序求出“爱情指标”。输入说明第一行两个正整数R和CR和C都不超过200。接下来R行C列描述整个操场红色砖块用1来表示蓝色砖块用0来表示。输出说明一个数表示他和她之间的“爱情指标”。#include stdio.h int main(){ int R, C; scanf(%d %d, R, C); int grid[R][C]; for(int i 0; i R; i){ for(int j 0; j C; j) scanf(%d, grid[i][j]); } int max_size (R C) ? R : C; //可能的最大边长 //从大到小搜索找到就退出 for(int size max_size; size 1; size--){ for(int i 0; i R - size; i){ for(int j 0; j C - size; j){ int color grid[i][j]; int is_same 1; //检查size×size的区域 for(int x i; x i size is_same; x){ for(int y j; y j size is_same; y){ if (grid[x][y] ! color) { is_same 0; break; } } } if (is_same){ printf(%d\n, size * size); return 0;//找到最大的就结束 } } } } printf(1\n);//至少有一个格子 return 0; }48约瑟夫环作者: ZhouMingLiang时间限制: 10s章节: 一维数组问题描述有一次明明的公司举行忘年会。忘年会的高潮部分是最后的抽大奖环节。公司为了增加活动的气氛并没有按传统的抽奖方式来抽而是进行了一个游戏逐步逐步地淘汰人而最后剩下的人将会得到大奖。这个游戏的方式如下首先公司的全部职员围成一个圈然后确定一个淘汰数X接着就从其中的一个人开始从1数数当数到X时那个人就被淘汰出局接着下一个人再从1开始数数一直这样重复下去直到剩下最后一个人那个人就是最后的大奖得主。例如公司有5个人淘汰数定为2则一开始五个人排成一圈依次编号为1、2、3、4、5 首先从编号1的人开始数数数到2后编号2淘汰这样只剩下4个人1、3、4、5 接着从编号3的人开始数数到2后编号4淘汰这样只剩下3个人13、5 接着从编号5的人开始数数到2后编号1淘汰这样只剩下2个人3、5 最后从编号为3的人开始数数到2后编号5淘汰最后编号为3的那个人就获得了最终的大奖。 注以上的淘汰顺序为2 4 1 5 3。由于明明的运气十分地差最后第二个被淘汰与大奖失之交臂十分郁闷。他想知道自己被淘汰的全过程于是他想请你帮个忙帮他写一个程序明明把他公司的人数告诉你并且把那个淘汰数也告诉你你的程序能够根据这两个数计算出淘汰人的具体顺序即把淘汰人的编号按顺序输出。明明的问题可以归结为给你一个公司的人数N和一个淘汰数X你的程序模拟上面描述的淘汰方式输出淘汰人的编号顺序。输入说明你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据每组测试数据仅一行每组测试数据有两个整数N1N100和X0X10N表示公司的人数X表示淘汰数两个整数用一个空格隔开。每组测试数据与其后一组测试数据之间没有任何空行第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。输出说明对于每一组测试数据你写的程序要求计算出一组相应的运算结果并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为N个整数即淘汰人的编号的顺序每个数之间用一个空格隔开。每组运算结果单独形成一行数据其行首和行尾都没有任何空格每组运算结果与其后一组运算结果之间没有任何空行第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。 注通常显示屏为标准输出设备。#include stdio.h int main(){ int N, X; while(scanf(%d %d, N, X) ! EOF){ int circle[100]; for(int i 0; i N; i) circle[i] i 1; //编号从1开始 int total N;//当前总人数 int idx 0;//当前位置 int count 0;//计数器 //模拟淘汰过程 for(int i 0; i N; i){ //找到第X个未被淘汰的人 while(1){ if(circle[idx] ! 0){//这个人还没被淘汰 count; if(count X) break; } idx (idx 1) % N; } //输出并淘汰这个人 printf(%d, circle[idx]); circle[idx] 0;//标记为淘汰 count 0;//重置计数器 if(i N - 1) printf( ); } printf(\n); } return 0; }49连续正整数的和作者: Turbo时间限制: 1s章节: 基本练习循环问题描述78这个数可以表示为连续正整数的和12318192021252627。输入一个正整数 n(10000)输出 m 行(n有m种表示法)每行是两个正整数ab表示a(a1)...bn。对于多种表示法a小的方案先输出。输入说明输入一个正整数 n(10000)输出说明输出 m 行(n有m种表示法)每行是两个正整数ab对于多种表示法a小的方案先输出。#include stdio.h int main(){ int n; scanf(%d, n); for(int i 1; i n; i){ int sum i; for(int j i 1; j n; j){ sum j; if(sum n){ printf(%d %d\n, i, j); break; } if(sum n) break; } } return 0; }50翻硬币作者: Turbo时间限制: 1s章节: 基本练习数组问题描述小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面用 o 表示反面是小写字母不是零。比如可能情形是**oo***oooo如果同时翻转左边的两个硬币则变为oooo***oooo现在小明的问题是如果已知了初始状态和要达到的目标状态每次只能同时翻转相邻的两个硬币,那么对特定的局面最少要翻动多少次呢我们约定把翻动相邻的两个硬币叫做一步操作输入说明两行等长的字符串分别表示初始状态和要达到的目标状态。每行的长度1000输出说明一个整数表示最小操作步数。比如输入*o**o***o****o***o**o***输出1#include stdio.h int main(){ char a[1001], b[1001]; scanf(%s%s, a, b); int count 0; for(int i 0; a[i] ! \0; i){ if(a[i] ! b[i]){ //翻转当前硬币 a[i] (a[i] *) ? o : *; //翻转下一个硬币 if(a[i 1] ! \0) a[i 1] (a[i 1] *) ? o : *; count; } } printf(%d, count); return 0; }51分糖果作者: Turbo时间限制: 1s章节: 基本练习数组问题描述有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果然后进行下面的游戏每个小朋友都把自己的糖果分一半给左手边的孩子。一轮分糖后拥有奇数颗糖的孩子由老师补给1个糖果从而变成偶数。反复进行这个游戏直到所有小朋友的糖果数都相同为止。你的任务是预测在已知的初始糖果情形下老师一共需要补发多少个糖果。输入说明程序首先读入一个整数N(2N100)表示小朋友的人数。接着是一行用空格分开的N个偶数每个偶数不大于1000不小于2输出说明要求程序输出一个整数表示老师需要补发的糖果数。#include stdio.h int main(){ int n; scanf(%d, n); int kids[100]; for (int i 0; i n; i) scanf(%d, kids[i]); int teacher 0; while (1){ //检查是不是都一样了 int ok 1; for(int i 0; i n; i){ for(int j i 1; j n; j){ if(kids[i] ! kids[j]){ ok 0; break; } } if (ok 0) break; } if (ok 1) break; //分糖 int give[100]; for(int i 0; i n; i) give[i] kids[i] / 2; //更新糖果 for(int i 0; i n; i){ int left_index; if(i 0) left_index n - 1; else left_index i - 1; kids[i] kids[i] - give[i] give[left_index]; } //老师补发 for(int i 0; i n; i){ if(kids[i] % 2 1){ kids[i] kids[i] 1; teacher teacher 1; } } } printf(%d\n, teacher); return 0; }52扫雷作者: Turbo时间限制: 1s章节: 基本练习数组问题描述扫雷游戏你一定玩过吧现在给你若干个n×m的地雷阵请你计算出每个矩阵中每个单元格相邻单元格内地雷的个数每个单元格最多有8个相邻的单元格。 0n,m100输入说明输入包含若干个矩阵对于每个矩阵第一行包含两个整数n和m0n,m100分别表示这个矩阵的行数和列数。接下来n行每行包含m个字符。安全区域用‘.’表示有地雷区域用*表示。当nm0时输入结束。输出说明对于第i个矩阵首先在单独的一行里打印序号“Field #i:”,接下来的n行中读入的.应被该位置周围的地雷数所代替。输出的每两个矩阵必须用一个空行隔开。#include stdio.h int main(){ int n, m; int field_num 1; while(scanf(%d %d, n, m) ! EOF){ if(n 0 m 0) break; char grid[100][100]; for(int i 0; i n; i) scanf(%s, grid[i]); // 输出场次编号 if(field_num 1) printf(\n); printf(Field #%d:\n, field_num); field_num; // 计算每个位置周围的地雷数 for (int i 0; i n; i) { for (int j 0; j m; j) { if(grid[i][j] *) // 如果是地雷直接输出* printf(*); else { // 计算周围8个方向的地雷数 int count 0; // 检查8个相邻位置 for (int di -1; di 1; di) { for (int dj -1; dj 1; dj) { if (di 0 dj 0) continue; // 跳过自己 int ni i di; int nj j dj; // 检查是否在边界内 if (ni 0 ni n nj 0 nj m) { if(grid[ni][nj] *) count; } } } printf(%d, count); } } printf(\n); } } return 0; }翻译Reinforcement learning is a powerful approach for solving sequential decision-making problems. In this framework, an agent interacts with an environment by taking actions and receiving rewards. The goal is to learn an optimal policy that maximizes cumulative rewards over time. Unlike supervised learning, reinforcement learning relies on trial-and-error rather than labeled data. Techniques such as Q-learning and policy gradient methods are widely used to train agents. With the integration of deep neural networks, deep reinforcement learning has achieved remarkable success in complex tasks such as game playing, robotic control, and autonomous systems. However, challenges such as sample inefficiency and unstable training remain key issues that researchers are actively addressing.增强学习是解决做决策次序问题的强有力方法。在这个框架中智能体通过行动和奖励与环境交互。这个目标是学习一个随着时间最大化积累奖赏的最优化策略。与监督学习不同增强学习依赖试错而不是有标签的数据。Q学习和梯度策略方法等技术广泛用于训练智能体。随着深度神经网络的一体化深度增强学习已经在例如玩游戏机器人控制和自动化系统等复杂领域取得非常大的成功。然而例如样本不足和训练不稳定等挑战仍然是科学家们需要积极处理的关键问题。Reinforcement learning强化学习sequential decision-making problems顺序决策问题