本文主要是介绍王道机试C++第一章:暴力求解-模拟篇 其他模拟问题 Day26,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
其他模拟
剩下的树(清华大学复试上机题)
题目描述:
298
代码表示
#include <bits/stdc++.h>
using namespace std;int main() {int tree[10001];int L,M;scanf("%d%d",&L,&M);//种下L+1棵树 for(int i=0;i<=L;++i){tree[i]=1;}for(int idx=0;idx<M;++idx){int left,right;scanf("%d%d",&left,&right);for(int i=left;i<=right;++i){tree[i]=0;}}int totalNumber=0;for(int i=0;i<=L;i++){if(1==tree[i]){++totalNumber;}}printf("%d\n",totalNumber); }
心得体会:
1、关于“树”的删除我们可以用使用数组,即数组置0,即可实现删除;
2、注意要有种树的这个步骤的代码!
手机键盘(清华大学复试上机题)
题目描述:
输入:bob
www
输出:7
7
思路提示
代码表示
#include <bits/stdc++.h>
using namespace std;int main() {map<char, int> inputTime = {{'a', 1}, {'b', 2}, {'c', 3},{'d', 1}, {'e', 2}, {'f', 3},{'g', 1}, {'h', 2}, {'i', 3},{'j', 1}, {'k', 2}, {'l', 3},{'m', 1}, {'n', 2}, {'o', 3},{'p', 1}, {'q', 2}, {'r', 3}, {'s', 4},{'t', 1}, {'u', 2}, {'v', 3},{'w', 1}, {'x', 2}, {'y', 3}, {'z', 4}};map<char, int> keyMap = {{'a', 2}, {'b', 2}, {'c', 2},{'d', 3}, {'e', 3}, {'f', 3},{'g', 4}, {'h', 4}, {'i', 4},{'j', 5}, {'k', 5}, {'l', 5},{'m', 6}, {'n', 6}, {'o', 6},{'p', 7}, {'q', 7}, {'r', 7}, {'s', 7},{'t', 8}, {'u', 8}, {'v', 8},{'w', 9}, {'x', 9}, {'y', 9}, {'z', 9}};char str[101];while (scanf("%s", str) != EOF) {int lastInput = 1;//初始lastInput置为和其他按键都不同的键 int totalTime = 0;for (int i = 0; str[i] != '\0'; ++i) {//遍历C风格的字符串 str[i]本次将要按下的字母//判断是否要等 if (lastInput == keyMap[str[i]]) {totalTime = totalTime + 2;//等待 }totalTime = totalTime + inputTime[str[i]];//输入本字符所需要的时间 lastInput = keyMap[str[i]];//记录本次按下的数字 }printf("%d\n", totalTime);}return 0;
}
×××定律(浙江大学复试上机题)
题目描述:
代码表示
#include <bits/stdc++.h>
using namespace std;int main() {int n, cishu = 0;while (scanf("%d", &n) != EOF) {if (n == 0) {break;}while (n != 1) {if (n % 2 == 0) {n = n / 2;} else {n = (3 * n + 1) / 2;}cishu++;}printf("%d\n", cishu);}return 0;
}
心得体会
1、while (scanf("%d", &n) != EOF)
这行代码的意思是不断读取输入的整数值给变量 n
,直到遇到文件结束符(EOF - End of File)为止。在这个循环中,scanf("%d", &n)
用来读取一个整数值,并将其存储在变量 n
中,!= EOF
则是判断是否已经到达文件结束符。
换句话说,当程序尝试从输入中读取整数值时,如果遇到文件结束符(通常是通过键盘输入 Ctrl+D 触发),scanf
函数会返回 EOF
,循环条件 scanf("%d", &n) != EOF
就会变为假,从而结束循环。
这种写法在需要连续读取输入,直到文件结束时很有用,可以有效处理未知数量的输入数据。
2、不要忘记if (n == 0) { break; } 由于文中说当 n 为 0 时表示输入结束
这篇关于王道机试C++第一章:暴力求解-模拟篇 其他模拟问题 Day26的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!