E - 查找最大元素

E - 查找最大元素

对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。

Input

输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。

Output

对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。

Sample Input

abcdefgfedcba
xxxxx

Sample Output

abcdefg(max)fedcba
x(max)x(max)x(max)x(max)x(max)


解题思路:

1、通过比较ASCII码找出最大的字母
2、挨个比较,等于最大字母的就在其后插入“(max)”

源代码如下:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str;
	string str1 = "(max)";
	while (cin >> str)
	{
		int length = str.length();         //求输入的字符串的长度
		char index = char(0);             //最大的元素,初值为零
		
		for (int i = 0; i < length; i++)        //寻找最大的元素
		{
			if (index < str[i])
				index = str[i];
		}
		for (int i = 0; i < length; i++)                //再次从头比较,若等于最大元素,就在其后插入(max)
		{
			cout << str[i];                                     //先输出字母,再比较
			if (index == str[i])
				cout << str1;
		}
		cout << endl;
	}
	return 0;
}
def find_max_value(data): """ 在给定的浮点数列表中找到最大值 参数: data (list): 包含浮点数的列表 返回: float: 列表中的最大值 """ # 初始化最大值为列表的第一个元素 max_value = data[0] # 遍历列表中的所有元素 for value in data: # 如果当前值大于当前最大值,则更新最大值 if value > max_value: max_value = value return max_value # 给定的数据列表 data = [ -2.1170e+00, -2.2946e+00, -1.9388e+00, -1.0788e+00, -1.9575e-01, 2.1127e-01, 8.6622e-01, 1.9143e+00, 2.3754e+00, 1.7895e+00, 7.8609e-01, -2.2728e-02, -4.8980e-01, -8.6273e-01, -1.2858e+00, -1.7589e+00, -1.7242e+00, -4.3987e-01, 2.7079e-01, -2.9072e-01, -6.3465e-01, -5.0020e-02, 4.5031e-01, 6.6790e-01, 8.8344e-01, 1.2111e+00, 1.4320e+00, 1.8310e+00, 1.8088e+00, 1.0437e+00, -4.7073e-01, -1.1295e+00, -2.7052e-01, -1.1993e+00, -2.0067e+00, -2.3101e+00, -1.9368e+00, -1.4998e+00, -1.3356e+00, -2.8575e-01, 1.2368e+00, 2.0519e+00, 1.9332e+00, 1.4403e+00, 9.6167e-01, 9.9694e-01, 4.7473e-01, -4.1425e-01, -1.2710e+00, -1.3989e+00, -1.7190e-01, -2.6536e-01, -1.1634e+00, -1.5509e+00, -1.0043e+00, -5.9718e-01, -4.8788e-01, 3.6344e-02, 4.3389e-01, 8.1169e-01, 1.9052e+00, 2.2936e+00, 1.3165e+00, 3.3471e-01, 1.5409e+00, 1.0692e+00, 4.5426e-02, -1.0831e+00, -1.5781e+00, -1.6351e+00, -2.1873e+00, -2.4800e+00, -1.6153e+00, -2.0500e-01, 7.1389e-01, 8.6695e-01, 6.6199e-01, 9.5804e-01, 1.3481e+00, 1.3687e+00, 3.8242e-01, -4.5692e-01, 6.8762e-02, 6.9256e-01, 5.4186e-02, -9.6360e-01, -1.2131e+00, -1.2118e+00, -1.4524e+00, -1.4175e+00, -1.0433e+00, -1.1563e+00, -4.2744e-01, 1.2317e+00, 1.8957e+00, 1.1720e+00 ] # 调用函数找到最大值 max_value = find_max_value(data) # 打印结果 print(f"列表中的最大值是: {max_value}") print(f"最大值的位置是: {data.index(max_value)}") print(f"最大值在列表中的索引: {[i for i, x in enumerate(data) if x == max_value]}") 现在data有96组,每个data里有96个数,找到所有中的最大值,修改代码
最新发布
07-02
<think>我们需要在96组数据(每组96个数)中找到全局最大值。数据组织方式为:一个包含96个元素的列表,每个元素又是一个包含96个数的列表(即96x96的二维数据)。因此,我们需要遍历所有96组(行),并在每组中遍历96个元素(列),找到整个二维列表的最大值。修改思路:1.将输入数据视为二维列表(96行,96列)。2.初始化一个变量`max_value`为二维列表的第一个元素(即data[0][0])。3.使用两层循环遍历所有行和列。4.对于每个元素,如果大于当前的`max_value`,则更新`max_value`。5.同时,我们可以记录最大值所在的行和列索引。另外,我们也可以记录所有最大值出现的位置(如果最大值有重复的话)。修改后的代码:</think>以下是修改后的代码,用于在96组数据(每组96个数值)中找到全局最大值: ```python def find_global_max(data_2d): """ 在二维数据中找到全局最大值及其位置 参数: data_2d (list of lists): 二维数据列表,包含96组每组96个数值 返回: tuple: (全局最大值, 最大值所在组索引, 在组内的索引) """ # 初始化最大值和位置 global_max = data_2d[0][0] group_index = 0 element_index = 0 # 遍历所有组 for group_idx, group_data in enumerate(data_2d): # 遍历组内所有元素 for elem_idx, value in enumerate(group_data): # 如果当前值大于当前最大值,则更新最大值和位置 if value > global_max: global_max = value group_index = group_idx element_index = elem_idx return global_max, group_index, element_index # 示例数据结构(实际数据应替换为96组每组96个数值) data_2d = [ # 第1组数据(96个数值) [-2.1170e+00, -2.2946e+00, -1.9388e+00, ... , 1.1720e+00], # 第2组数据(96个数值) [-1.0788e+00, -1.9575e-01, 2.1127e-01, ... , -4.2744e-01], # ... 其他94组数据 ... # 第96组数据(96个数值) [1.2317e+00, 1.8957e+00, 1.1720e+00, ... , 3.3471e-01] ] # 调用函数找到全局最大值及其位置 max_value, group_idx, elem_idx = find_global_max(data_2d) # 打印结果 print(f"全局最大值是: {max_value}") print(f"位于第 {group_idx + 1} 组, 组内索引 {elem_idx}") print(f"在所有数据中的绝对位置: {group_idx * 96 + elem_idx}") # 可选:查找所有最大值的位置(如果有重复的最大值) all_max_positions = [] for group_idx, group_data in enumerate(data_2d): for elem_idx, value in enumerate(group_data): if value == max_value: all_max_positions.append((group_idx, elem_idx)) print(f"所有最大值位置: {all_max_positions}") ``` ### 代码解释: 1. **`find_global_max` 函数**: - 接受二维列表 `data_2d` 作为输入 - 初始化全局最大值为第一个组的第一个元素 - 使用嵌套循环遍历所有组和组内所有元素 - 当找到更大的值时,更新全局最大值并记录位置 - 返回全局最大值及其位置(组索引和组内索引) 2. **数据结构**: - `data_2d` 是一个包含96个子列表的列表 - 每个子列表包含96个浮点数值 - 示例中只展示了部分数据,实际应包含完整的96×96数据 3. **结果处理**: - 打印全局最大- 显示最大值所在的组号(从1开始计数)和组内索引 - 计算并显示在所有数据中的绝对位置(0-based索引) - 可选:查找所有最大值的位置(如果有重复的最大值) ### 性能优化版本: 对于大型数据集(96×96=9216个元素),我们可以使用更高效的方法: ```python import numpy as np def find_global_max_numpy(data_2d): """ 使用NumPy在二维数据中找到全局最大值及其位置 参数: data_2d (list of lists): 二维数据列表 返回: tuple: (全局最大值, 行索引, 列索引) """ # 将数据转换为NumPy数组 arr = np.array(data_2d) # 找到全局最大值 max_value = arr.max() # 找到最大值的位置 positions = np.where(arr == max_value) # 返回第一个最大值的位置 return max_value, positions[0][0], positions[1][0] # 使用NumPy版本 max_value, row_idx, col_idx = find_global_max_numpy(data_2d) print(f"全局最大值: {max_value}") print(f"位置: 第 {row_idx + 1} 行, 第 {col_idx + 1} 列") ``` ### 使用内置函数的简洁版本: ```python # 使用Python内置函数 max_value = max(max(group) for group in data_2d) # 找到最大值的位置 for group_idx, group_data in enumerate(data_2d): for elem_idx, value in enumerate(group_data): if value == max_value: print(f"最大值 {max_value} 位于第 {group_idx + 1} 组, 位置 {elem_idx}") # 如果只需要第一个位置,可以添加break ``` ### 性能比较: | 方法 | 时间复杂度 | 空间复杂度 | 适合场景 | |------|------------|------------|----------| | 嵌套循环 | O(n²) | O(1) | 小数据集,无需额外依赖 | | NumPy | O(n²) | O(n²) | 大数据集,需要高性能 | | 生成器表达式 | O(n²) | O(1) | 简洁代码,中等数据集 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值