小白鼠再排队
N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,
要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。
帽子的颜色用 “red”,“blue”等字符串来表示。
不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。

输入
输入第一行为一个整数N,表示小白鼠的数目。 下面有N行,每行是一只白鼠的信息。
第一个为正整数,表示白鼠的重量,不超过整型范围;
第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。 注意:白鼠的重量各不相同。
输出
按照白鼠的重量从小到大的顺序输出白鼠的帽子颜色。
样例输入
3
30 red
50 blue
40 green
样例输出
red
green
blue

#include <bits/stdc++.h>
using namespace std;
//方法1
int main()
{int n;//小白鼠的数量cin>>n;int w[n];//存小白鼠的重量string color[n];//存小白鼠的帽子颜色for(int a =0;a<n;a++)cin>>w[a]>>color[a];//用户输入每只老鼠的重量和帽子颜色for(int a =0;a<n;a++){for(int b =0;b<n-a-1;b++){if(w[b]>w[b+1]){swap(w[b],w[b+1]);swap(color[b],color[b+1]);}}}for(int a =0;a<n;a++)cout<<color[a]<<endl;return 0;
}

#include <bits/stdc++.h>
using namespace std;
//方法二struct ls
{int weight;//老鼠的重量属性string color;//老鼠的颜色属性
};bool cmp(ls a,ls b)//改写sort函数排序规则
{if(a.weight>b.weight)return false;elsereturn true;
}int main()
{int n;//小白鼠的数量cin>>n;ls arr[n];//结构体数组for(int a =0;a<n;a++)cin>>arr[a].weight>>arr[a].color;//用户输入重量和颜色sort(arr,arr+n,cmp);for(int a =0;a<n;a++)cout<<arr[a].color<<endl;return 0;
}

多余的数
小A同学在完成一个数学题:求给定的10个整数的和。小A同学在求完之后发现和参考答案对不上,
检查后发现在求和过程中多计算了一个数,其他过程没有问题。
现给出小A计算用的11个数,以及正确的参考答案,请算出小A同学多计算的那一个数。

输入:第一行11个正整数,每个数小于等于1000000 第二行一个整数,表示参考答案
输出:一个整数,表示多计算的那一个数。

样例输入
2 4 6 8 1 3 5 7 9 5 11
54

样例输出7

提示
样例中原有的10个数为2 4 6 8 1 3 5 9 5 11,和为54,多余的数为7。

#include <bits/stdc++.h>
using namespace std;int main()
{int arr[11],sum=0;for(int a =0;a<11;a++){cin>>arr[a];sum+=arr[a];//对数组元素求和}int ans;cin>>ans;cout<<sum-ans;//数组元素的和-参考答案就是多余的数return 0;
}

最好的草
奶牛Bessie计划好好享受柔软的春季新草。新草分布在R行C列的牧场里。它想计算一下牧场中的草丛数量。
在牧场地图中,每个草丛要么是单个“#”,要么是有公共边的相邻两个“#”。给定牧场地图,计算有多少个草丛。
例如,考虑如下5行6列的牧场地图
.#…
…#…
…#…#
…##.
.#…
这个牧场有5个草丛:一个在第一行,一个在第二列横跨了二、三行,一个在第三行,一个在第四行横跨了四、五列,最后一个在第五行。

输入:第一行包含两个整数R和C,中间用单个空格隔开。 接下来R行,每行C个字符,描述牧场地图。字符只有“#”或“.”两种。(1 <= R, C <= 100 )

输出:输出一个整数,表示草丛数。

样例输入
5 6
.#…
…#…
…#…#
…##.
.#…
样例输出
5

#include <bits/stdc++.h>
using namespace std;int main()
{int r,c;//r是行,c是列cin>>r>>c;int arr[r][c];for(int a =0;a<r;a++)for(int b =0;b<c;b++)cin>>arr[a][b];//用户输入二维数组字符int count=0;for(int a =0;a<r;a++){for(int b =0;b<c;b++){if(arr[a][b]=='#'&&arr[a][b+1]=='#')//找当前坐标的草相邻右边的草{count++;arr[a][b]='.';arr[a][b+1]='.';}else if(arr[a][b]=='#'&&arr[a+1][b]=='#')//找当前坐标的草相邻向下的草{count++;arr[a][b]='.';arr[a+1][b]='.';}else if(arr[a][b]=='#')//单独的草丛{count++;arr[a][b]='.';}}}cout<<count; return 0;
}

字符串中最长的连续出现的字符
求一个字符串中最长的连续出现的字符,输出该字符及其出现次数。字符串中无空白字符(空格、回车和tab),如果这样的字符不止一个,
则输出出现最早的字符。

输入:一行,一个不包含空白字符的字符串,字符串长度小于200。
输出:一行,输出最长的连续出现的字符及其最长的连续出现次数,中间以一个空格分开。

样例输入aaaaadbbbbbcccccccdddddddddd
样例输出d 10

#include <bits/stdc++.h>
using namespace std;int main()
{string s;cin >> s;//cp是存放最大次数的临时变量,count计数最大次数int cp = -1, count = 1;char c;//保存最大出现次数的字符c = s[0];for (int a = 0; a < s.length() - 1; a++){if (s[a] == s[a + 1]){count++;if (count > cp){cp = count;c = s[a];}}elsecount = 1;}cout << c << " " << cp;return 0;
}

打字员
有一个打字员,他打字的时候有个习惯,从来不用 Shift 来切换大小写,只用 Caps Lock。 现在给他一个地铁站的名字,你需要写一个程序来告诉他,他需要敲击多少下键盘才能打出 这个地铁站名。

输入
第一行输入一个数字 n (n<1000),表示共有多少个需要处理的车站名。从第 2 到第 n+1 行是这 n 个车站名。车站名由英文字母构成,名字的长度不会超过 100 个字符。已知开始时 键盘是输入小写字母的状态。

输出
这个打字员敲击键盘的次数。

样例输入
5
BeiJingDaXueDongMen
AAAaaaBBBbbbABAB
AmericanRAILWAY
AaAaAa
DFjfkdaB

样例输出
31
21
18
12
11

#include <bits/stdc++.h>
using namespace std;
//方法1
int main()
{int n = 0;cin >> n;string s[n];//字符串数组bool flag = true; //存储当前的大小写状态int count = 0;//计数大写键敲击的次数for (int i = 0; i < n; i++)cin >> s[i];for (int i = 0; i < n; i++){for (int j = 0; j < s[i].length(); j++)if (flag == true && (s[i][j] >= 'A' && s[i][j] <= 'Z')){count++;flag = false;}else if (flag == false && (s[i][j] >= 'a' && s[i][j] <= 'z')){count++;flag = true;}cout << count + s[i].length() << endl;count = 0;flag = true;}return 0;
}

#include <bits/stdc++.h>
using namespace std;
int pd(char c)
{if(c>='a'&&c<='z')return 1;return 2;
}
int main()
{int n;string s[1000];cin>>n;for(int i=0;i<n;i++)cin>>s[i];for(int i=0;i<n;i++){int len=s[i].length(),t=0;if(pd(s[i][0])==1)     //第一个字母单独处理t++;elset+=2;for(int j=1;j<len;j++){if(pd(s[i][j])==pd(s[i][j-1]))    //是否与前一个字母相同t++;     //相同直接打elset+=2;     //不相同先切换大小写再打}cout<<t<<endl;}return 0;
}

田忌赛马
在田忌赛马的故事中,孙膑用自己的下等马对战对手的上等马,自己上等马对阵对手的中等马,自己的中等马对阵对手的下等马,从而赢得了胜利。现在即将进行的是N匹马的赛马比赛。双方队伍的马各分为N等。已知只有当我方马的等级比对方马等级高X等以上(包含X)时,我方才可以取得这场比赛的胜利。如果在N场比赛中我方的胜场数大于对方,则我方取得最终的胜利。现在已知对方这N场比赛的出战方案,请计算所有令我方最终获胜的出战方案。

输入:第一行两个整数,N和X。N≤9, 0 ≤ X < N。 第二行N个正整数,A(1)…A(N)。A(i)表示第i场比赛对方马的等级,1≤i≤N。等级越高越强

输出:按字典序输出所有我方最终获胜的方案,每个方案一行。每行是N个正整数,第i个数表示我方第i场比赛马的等级。

样例输入
样例1输入
3 1
3 2 1

样例2输入
3 0
3 1 2

样例输出
样例1输出
1 3 2

样例2输出
1 2 3
1 3 2
2 1 3
3 1 2
3 2 1

生成括号
Paul是一名数学专业的同学,在课余选修了C++编程课,现在他能够自己写程序判断判断一个给定的由’(‘和’)'组成的字符串是否是正确匹配的。可是他不满足于此,想反其道而行之,设计一个程序,能够生成所有合法的括号组合,请你帮助他解决这个问题。

输入:输入只有一行N,代表生成括号的对数(1 ≤ N ≤ 10)。
输出:输出所有可能的并且有效的括号组合,按照字典序进行排列,每个组合占一行。
样例输入3
样例输出
((()))
(()())
(())()
()(())
()()()

本题的麻烦在于要按字典序进行排列。做法有二:一是先穷举所有组合然后排序二是找规律后用字符移位的方法逐一输出。
穷举再排序的方案要动态创建二维字符数,字符移位则只需要一个一维字符数组即可,相对简单。
原理是先生成指定数量的嵌套括号对,放在数组里然后找到最里层的括号对,接着寻找其后面的左括号,找到则将括号对后面的字符左侧,将括号对插入到所找到的左括号的位置。然后在移动的括号对之前寻找最右侧的第一个括号对,重复上述操作如果未找到左括号,则找右括号,找到后右移,直到移到最后面。关键:最左侧出现新的成对的括号时,从括号后面重新生成数量-1的嵌套括号对放在数组里。然后递归调用,直到数组变成“() () ()”的形式。
#include<bits/stdc++.h>
using namespace std;
struct pos
{char c;int index;
};
bool cmp(pos p1,pos p2){if(p1.index<p2.index)  return true;else                  return false;
}
int main()
{string s;   pos pos1;stack<pos> bracket_r;  stack<pos> bracket_l;vector<pos> help;bool flag=false;while(1){cin>>s;for(int i=0;i<s.length();i++){pos1.c=s[i];pos1.index=i;if(s[i]=='(')bracket_l.push(pos1);else if(s[i]==')')if(bracket_l.empty()==false)bracket_l.pop();elsebracket_r.push(pos1);  }while(bracket_l.empty()==false){help.push_back(bracket_l.top());bracket_l.pop();}while(bracket_r.empty()==false){help.push_back(bracket_r.top());bracket_r.pop();}sort(help.begin(),help.end(),cmp);cout<<s<<endl; for(int i=0;i<s.length();i++){for(int j=0;j<help.size();j++)if(help[j].index==i){if(help[j].c=='(')cout<<"$";else if(help[j].c==')')cout<<"?";flag=true;break;}      if(flag==false)cout<<" "; flag=false;}cout<<endl;help.clear();while(bracket_l.empty()==false)bracket_l.pop();while(bracket_r.empty()==false)bracket_r.pop();}return 0;
}


#include <bits/stdc++.h>
using namespace std;int main()
{int n, len, k, b[200][10];cin >> n;for (int i = 1; i <= n; i++) //输入序列的初始值{cin >> b[i][1];b[i][2] = 1; //最大子序列长度初始为1b[i][3] = 0; //表示后面无连接项}for (int i = n - 1; i >= 1; i--) //求最长不下降序列{len = 0;k = 0;for (int j = i + 1; j <= n; j++){if (b[j][1] >= b[i][1] && (b[j][2] > 1)){len = b[j][2];k = j;}if (len > 0){b[i][2] = len + 1;b[i][3] = k;}}}k = 1;for (int i = 1; i <= n; i++) //求最长不下降序列的起始位置{if (b[i][2] > b[k][2])k = i;}cout << "max=" << b[k][2] << endl; //输出结果while (k != 0) //输出最长不下降序列{cout << ' ' << b[k][1];k = b[k][3];}return 0;
}

[iHOOYA]2023年1月28日作业解析相关推荐

  1. 【软考备战·希赛网每日一练】2023年4月28日

    文章目录 一.今日成绩 二.错题总结 第一题 第二题 第三题 三.知识查缺 题目及解析来源:2023年04月28日软件设计师每日一练 一.今日成绩 二.错题总结 第一题 解析: 大体了解即可,题目要考 ...

  2. 2023年1月28日(星期六):骑行侧卧云

    2023年1月28日(星期六):骑行侧卧云,早8:30到9:00,郊野公园西门集合,9:30点准时出发 [因迟到者,骑行速度快者,可自行追赶偶遇.] 偶遇地点: 郊野公园西门集合,家住南,东,北的骑友 ...

  3. 青龙面板基本脚本运行必装依赖 一键式安装脚本安装依赖 2023年3月28日

    低调使用 建议加入收藏,以免丢失 JD扫码登陆http://152.69.226.3:5016/#/login 青龙必须要安装的依赖 一键依赖 docker exec -it qinglong bas ...

  4. 博客摘录「 MACD金叉不绿选股公式」2023年5月28日

    DIF:=EMA(CLOSE,10)-EMA(CLOSE,20);DEA:=EMA(DIF,7);MACD:=(DIF-DEA)*2;A1:=CROSS(DIF,DEA) AND DIF>=0 ...

  5. 2023年1月28日每日一练-豚鼠排名榜(字符串、比较运算)

    每日一练-豚鼠排名榜 已知字符A.B,C.每个字符都有自己的权值q. 现不知道权值q,只知道A,B,C的三次比较结果. import java.util.HashMap; import java.ut ...

  6. Conflux「 .web3 用户名 」2月28日正式上线!

    在之前的文章中,我们介绍了 DID (去中心化身份)的重要性,并预告了 Conflux树图区块链 将推出「 .web3 用户名 」服务,为用户提供更好的 Web3 体验. 今日正式向大家宣布这个好消息 ...

  7. 2023年7月1日起,五险一金缴费基数上调,到手工资变少了!

    上一篇:被裁员了,月底走人拿n+1,多待一个月拿n,该怎么选? 今天给大家盘点了一下各省市2023年最新的社保.公积金缴费基数. 2023社保缴费基数定了 一.上海 2023年6月28日,上海市人社局 ...

  8. 2023北京养老展会(CBIAIE北京老博会)8月28日开展

    2023年度唯具参展价值的养老业盛会|第十届中国(北京)国际老年产业博览会8月28日开幕: 为什么要选择8月参展?近三年以来,因"口罩"对老年人极其不友好,特别是有基础病的老年人, ...

  9. 2023北京老博会,北京老龄生活用品展览会8月28日开幕

    CBIAIE北京老博会,打造2023年度全国唯具参展价值的老年行业盛会: 老年产业:我国是全球老年人口数量居首的国家,截止2022年末,全国60岁以上的老年人口数量已达2.9亿.庞大的老年人口基数,成 ...

最新文章

  1. 怎么修复手机服务器,新手机怎么恢复旧手机上的所有数据?
  2. 乔布斯留给后人最宝贵的十条经验!
  3. ubuntu中PyCharm的安装与卸载
  4. python开发网络小工具_Python集成网络诊断小工具(含有ping,tracert,tcping等小工具)...
  5. C#中的thread和task之Task
  6. 工作107:插入请求头
  7. [Unity] ACT 战斗系统学习 3:ScriptableObject
  8. [Node.js] mySQL数据库 -- 数据库的基本操作
  9. 有一个字长32位的浮点数符号位1位_边缘计算专题:(二)别看只有0和1,数学不好的勿进!...
  10. Center OS 7 /etc/rc.d/init.d/network, status=6
  11. matlab神经网络(二)-bp神经网络,MATLAB神经网络(2) BP神经网络的非线性系统建模——非线性函数拟合...
  12. ESP8266—“ICACHE_FLASH_ATTR”宏——解释含义
  13. 谭浩强C语言练习题及详细答案
  14. word如何打出取整符号
  15. 青鸟BCNT-网络信息安全工程师
  16. Stata基础:数据显示格式和四舍五入
  17. 智能制造案例——面向重型机械车间智能制造系统解决方案
  18. Mac 清理存储空间
  19. mysql explain不准确_mysql explain预估剖析
  20. 小程序破解WIFI密码,亲测有效

热门文章

  1. 遗传算法优化BP神经网络
  2. Spring 消息模式
  3. html表格提交时新开窗口实例
  4. 联想混合云Lenovo xCloud,新企业IT服务门户
  5. 有什么比较好用写小说的软件?
  6. 输入一个华氏温度输出摄氏温度
  7. 合金装备幸存服务器维护,游戏新消息:极品飞车20复仇玩家成长系统后续改动细节...
  8. 电脑连接电视以后只有桌面没有图标?快捷键一步搞定
  9. ucore lab3学习笔记整理
  10. 计算方法之数值积分方法——复化梯形法,复化辛普森法,龙贝格法,三点高斯公式 附matlap程序下载