10 条题解
-
10
解析
用num[i]表示i出现的次数。
- 寻找最大值maxn
- 统计每个数出现次数
- 输出0~maxn中,每个数出现次数
题解
#include <iostream> #include <algorithm> using namespace std; int num[10005], a[10005], maxn; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; maxn = -1; for (int i = 1; i <= n; i++) maxn = max(maxn, a[i]); for (int i = 1; i <= n; i++) num[a[i]]++; for (int i = 0; i <= maxn; i++) cout << num[i] << endl; return 0; }
-
1
#include <iostream> using namespace std; int s[10005]; int main() { int a,maxn=-1; cin>>a; for (int i=1;i<=a;i++) { cin>>s[i]; } for (int i=1;i<=a;i++) { if (s[i]>maxn) { maxn=s[i]; } } for (int i=0;i<=maxn;i++) { int sum=0; for(int j=1;j<=a;j++) { if (s[j]==i) sum+=1; } cout<<sum<<endl; } return 0; }//笨笨的做法
-
0
#include<iostream> using namespace std; int main() { int n,maxa=0; cin >> n; int a[n]; for(int i=0;i<n;i++) { cin >> a[i];//循环输入 if (a[i]>=maxa)//判断是否大于最大值 { maxa=a[i];//更新最大值 } } for(int i=0;i<=maxa;i++)//计算0~maxa的出现次数 { int x=0; for(int j=0;j<n;j++) { if (a[j]==i) { x++; } } cout << x << endl; } return 0; }
-
0
#include <iostream> using namespace std; int main() { int max , a[10000] , n , sum = 0; cin >> n; for(int i = 0;i < n;i++) { cin >> a[i]; } max = a[0]; for(int i = 1;i < n;i++) { if(a[i] > max) { max = a[i]; } } for(int i = 0;i <= max;i++) { for(int j = 0;j < n;j++) { if(a[j] == i) { sum++; } } cout << sum << endl; sum = 0; } return 0; }
-
0
这个题的主要思路是先找出最大值,**用一个辅助的cnt[]数组统计出每个数字在他相应的位置出现了几次,这里的关键代码为: f[i]表示这n个元素,1就在他在cnt[]数组里对应的cnt[1]++,5就在cnt[5]++,以此类推。 然后我们直接输出cnt[]1~max值里面的数值就可以了
注意,这个题因为要统计0的次数,所以循环条件一定从0开始,而最后输出的时候max值的次数也要输出,所以边界为i<=maxn `
#include<iostream> #include<cstdio> #define N 10010 #define rg register #define ll long long using namespace std; int n; int f[N]; inline void read(int &x){ int f=1; char ch=getchar(); x=0; while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ x=x*10+ch-'0'; ch=getchar(); } x*=f; } int maxn=0xc0c0c0c0; int cnt[N]; int main(){ read(n); for(rg int i=0;i<n;i++){ read(f[i]); if(f[i]>maxn) maxn=f[i]; } for(rg int i=0;i<n;i++){ cnt[f[i]]++; } for(rg int i=0;i<=maxn;i++) printf("%d\n",cnt[i]); return 0; }
-
-1
#include<bits/stdc++.h> using namespace std; int main() { int n,a[10005],num=0; cin>>n; for(int i = 1;i<=n;i++)cin>>a[i]; sort(a+1,a+n+1);//排序 for(int i =0;i<=a[n];i++)//获取0至最大数 { for(int j =1;j<=n;j++) if(a[j]==i)//判断,如果是就加一 num++; cout<<num<<endl;//输出 num=0;//再初始化,开始下一轮的计数 } return 0; }//感觉思路挺简洁的哈
-
-2
#include <bits/stdc++.h> using namespace std; int num[114514], a[1919810], maxn;//这么臭(划掉)烂(划掉)简单的代码还有必要放吗 int main() { int n; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; maxn = -1; for (int i = 1; i <= n; i++) maxn = max(maxn, a[i]); for (int i = 1; i <= n; i++) num[a[i]]++; for (int i = 0; i <= maxn; i++) cout << num[i] << endl; return 0; }
-
-2
思路写在代码里面了qwq
#include<bits/stdc++.h> using namespace std; int bok[10005]; // bak数组,用于存储数据 int main() { /* 思路: 先输入,再把输入值对应bak项自增,利用maxn来获取较大值,最后输出 */ int n,maxn=-1; cin >> n; int a[n]; for(int i = 0;i < n;i++){ cin >> a[i]; // 输入值 bak[a[i]]++; // 自增 if(a[i] > naxn)maxn = a[i];// 最大值判定 }for(int i = 0;i <= maxn;i++)cout << bak[i] << endl; // 根据最大值输出 return 0; }
-
-4
解析
用count[i]表示i出现的次数。
- 循环输入n个数放入数组中,并找到最大数寻找最大值maxn。
- 统计每个数的出现的次数存入Count数组相同下标对应元素中。
- 循环Count数组,输出每个数出现次数。
题解
🚀️ 🚀️ 😄 😄 🎉️ 🎉️
#include <iostream> using namespace std; int count[10005],a[10005], n,maxn = -1; int main() { cin >> n; //循环输入n个数放入数组,并找到最大数。 for (int i = 1; i <= n; i++) { cin >> a[i]; if(a[i]>maxn) maxn = a[i]; } //循环数组的n个数,统计每个数的出现的次数存入Count数组相同下标对应元素中。 for (int i = 1;i <= n;i++) count[a[i]]++; //循环Count数组,输出统计结果。 for (int i = 0;i <= maxn;i++) cout << count[i]<< endl; return 0; }
- 1
信息
- ID
- 292
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 1678
- 已通过
- 616
- 上传者