本文主要是介绍简单的小题集(六),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、生命貮号长智力
- 二、破译密码靠你啦!
一、生命貮号长智力
期中考试快到了,面对一大堆课程要复习,总是让人焦头烂
额,有什么办法可以让你瞬间获取超能力呢? Du 老师最近发明了一种
补脑神药:生命 2 号口服液,吃了它可以让你脑袋以每秒 5000 转的速
度转动,记忆存储功能超常表现,理解能力线性增长。 现在摆在你面
前有很多生命 2 号排成一排,每个生命 2 号的 power 值不一样,现在你
要取一些生命 2 号神药服用,但是要求不能取任意两个相邻的生命 2 号,
请问怎么才能得到最多的能量值。在下图所示的 6 个小瓶中,我们取第
1 个、第 3 个和第 6 个瓶子时可以得到 1+4+8=13 的能量值。
#include <stdio.h>
int maxEnergy(int energy[], int n) {int dp[n]; // 存储最大能量值的数组dp[0] = energy[0]; // 初始化第一个瓶子的最大能量值// 递推计算最大能量值for (int i = 1; i < n; i++) {// 当前瓶子选中时的最大能量值int include = energy[i];// 前一个瓶子未选中时的最大能量值int exclude = dp[i - 1];// 当前瓶子与前一个瓶子相邻时,选择能量值较大的瓶子dp[i] = (include > exclude + energy[i - 1]) ? include : exclude + energy[i -
1];}return dp[n - 1]; // 返回最后一个瓶子的最大能量值
}
int main() {int energy[] = {1, 3, 4, 1, 8, 2}; // 每个瓶子的能量值int n = sizeof(energy) / sizeof(energy[0]); // 瓶子的数量int maxEnergyValue = maxEnergy(energy, n);printf("最大能量值为:%d\n", maxEnergyValue);return 0;
}
二、破译密码靠你啦!
最近手机频频被盗,引起了学校的高度重视。Du
老师给的建议是直接扔宿舍,这样既可以保证手机安全又可以安心上课
心无旁骛。但是很显然,这不太现实。学校发现,偷手机的人是团伙作
案,他们之间通过加密的英文信息进行通讯,这些加密的信息完全看不
懂,但是很幸运的是解密规则被你无意中发现。具体解密方法是这样:
(1) 每一个#替换为一个空格
(2) 把数字 1 换成 A,2 换成 B,3 换成 C… 26 换成 Z
(3)连字符(短横线)不必理会,仅仅是分割每一个字母
比如小偷的行动地点是学生食堂,那么明文和对应的密文如下所示。
明文:XUE SHENG SHI TANG
密文:26-21-5#19-8-5-14-7#19-8-9#29-1-14-7
现在学校截获了很多密文,要求计算机系的你帮助学校破译,如果破译
成功,将会记大功一件,并直接保送。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void decrypt(char* ciphertext) {int len = strlen(ciphertext);char* plaintext = (char*)malloc((len + 1) * sizeof(char)); // 动态分配内存存储解
密后的明文for (int i = 0; i < len; i++) {if (ciphertext[i] == '#') {plaintext[i] = ' ';} else if (ciphertext[i] == '-') {continue; // 跳过连字符} else {int shift = ciphertext[i] - '0';char decryptedChar = 'A' + shift - 1;plaintext[i] = decryptedChar;}}plaintext[len] = '\0'; // 添加字符串结束符printf("解密结果:%s\n", plaintext);free(plaintext); // 释放动态分配的内存
}
int main() {char ciphertext[1000];printf("请输入密文:");fgets(ciphertext, sizeof(ciphertext), stdin);// 移除换行符ciphertext[strcspn(ciphertext, "\n")] = '\0';decrypt(ciphertext);return 0;
}
这篇关于简单的小题集(六)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!