
int a[105] = {0}; 定义长度为 105 的数组,初始值全为 0a[t] 标记数字 t 是否出现(t 作为下标)cin >> n >> t;cout << i << " "; 按要求输出数字或结果a[5]=1 表示数字 5 出现过)a[t]++ 统计数字出现次数(第三套代码)if (a[i] == 0):筛选未出现的元素(第二套代码)if (a[i] > max):查找最大值(第三套代码变种)【题目描述】
探险家小可想要绘制某个森林的路径图,已知森林里有10条路,编号为1~10,小可需要不重复的将每条路走一遍,现在已经走了其中5条。但此时的小可已经比较疲惫,不确定还有哪些路没有绘制。输入五个数,表示已经走过的路。请问还剩哪些路没有走过?
例如走过2 7 4 1 8,则请告诉他:3 5 6 9 10没有走过。
【输入格式】
输入一行,五个数字,表示已经走过的路径编号。
【输出格式】
输出一行,五个数字,表示没有走过的路径编号。
【输入样例】
2 7 4 1 8
【输出样例】
3 5 6 9 10
#include <iostream>
using namespace std;
int a[15] = {0}; // 定义标记数组,用于标记1-10范围内的数字是否出现过,初始全为0
int main() {
int t;
// 标记阶段:读取5个输入数字,并在数组a中标记这些数字出现过
for (int i = 1; i <= 5; i++) {
cin >> t; // 读取一个输入数字
a[t] = 1; // 将该数字对应的数组位置标记为1(表示出现过)
}
// 输出阶段:遍历1-10的所有数字,输出未被标记的数字(即未出现过的数字)
for (int i = 1; i <= 10; i++) {
if (a[i] == 0) { // 若数组位置i仍为0,说明数字i未被标记(未出现过)
cout << i << " "; // 输出该数字
}
}
return 0;
}本来有一个完整的俄罗斯套娃,现在被小可都拆开了,很是凌乱,现在需要你帮我按套娃的尺寸从大到小的给我,帮我一起把套娃组装起来!
每组测试数据第一行以一个正整数n(1 <= n <= 100)开始,接下来n个正整数(代表套娃的尺寸,最大不超过100)用空格隔开。
对于每组测试数据,输出一行,表示套娃尺寸的顺序,如有相同尺寸的套娃只需要输出一个。
5
4 1 3 2 3
4 3 2 1
#include <iostream>
using namespace std;
int a[105] = {0}; // 定义标记数组,用于标记1-100范围内的数字是否出现过,初始全为0
int main() {
int n, t;
cin >> n; // 输入数字的总数量
// 标记阶段:读取n个输入数字,并在数组a中标记这些数字出现过
for (int i = 1; i <= n; i++) {
cin >> t; // 读取一个输入数字
a[t] = 1; // 将该数字对应的数组位置标记为1(表示出现过)
}
// 输出阶段:从100到1倒序遍历,输出所有出现过的数字(降序排列)
for (int i = 100; i > 0; i--) {
if (a[i] == 1) { // 若数组位置i为1,说明数字i出现过
cout << i << " "; // 输出该数字,用空格分隔
}
}
return 0;
}小可想要在学校给同学们做一份问卷调查,为了保证数据的真实有效,他决定用随机数的方式来选择发放问卷的人群。
他先用计算机生成了X个1到1000之间的随机整数(X≤100),之后将重复的数字去掉,只保留一个,然后找这个号码对应学号的同学们来发放问卷。
请你帮助小可将这些数字按照从小到大的顺序排列出来。
输入共两行:
第一行为1个正整数,表示所生成的随机数的个数:X;
第二行有X个用空格隔开的正整数,为所产生的随机数。
输出共两行:
第一行为1个正整数X,表示不相同的随机数的个数。
第二行为X个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
10
20 40 32 67 40 20 89 300 400 15
8
15 20 32 40 67 89 300 400
#include<iostream>
using namespace std;
int main(){
// 定义数组a,大小为1005,初始值全为0,用于标记数字是否出现;n用于存储输入的数量,x用于临时存储输入的数字,cnt用于统计符合条件的数字个数
int a[1005]={0},n,x,cnt=0;
// 输入要处理的数字个数n
cin>>n;
// 循环n次,读取n个数字并做标记
for(int i=1;i<=n;i++){
// 读取一个数字x
cin>>x;
// 将数组a中对应下标x的位置赋值为1,标记该数字x出现过
a[x]=1;
}
// 循环1到100,统计数组a中下标对应位置值为1的数量(即1到100中出现过的数字个数)
for(int i=1;i<=100;i++){
// 判断数组a下标i位置的值是否为1(即数字i是否出现过)
if(a[i]==1){
// 若出现过,cnt加1,统计出现过的数字总数
cnt++;
}
}
// 输出1到100中出现过的数字的总个数
cout<<cnt<<endl;
// 再次循环1到100,输出出现过的数字(即数组a下标对应位置值为1的数字)
for(int i=1;i<=100;i++){
// 判断数字i是否出现过(数组a下标i位置值是否为1)
if(a[i]==1){
// 若出现过,输出该数字i,并用空格分隔
cout<<i<<" ";
}
}
return 0;
}原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。