搜索
热搜: NOIP OIer 神牛
查看: 849|回复: 14

1468 【明明的随机数四种解法】

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-7-19 12:28:20 | 显示全部楼层 |阅读模式
本帖最后由 Ethan 于 2023-3-19 09:06 编辑

明明的随机数四种解法

见评论区
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2022-7-19 12:30:33 | 显示全部楼层
桶:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5.     int a[1001]={0},t,n,s=0,i,max=0;
  6.     cin>>n;
  7.     for(i=0;i<n;i++)
  8.     {
  9.         cin>>t;
  10.         if(a[t]==0)
  11.             s++;
  12.         a[t]++;
  13.         if(max<t)
  14.             max=t;
  15.     }
  16.     cout<<s<< endl;
  17.     for(i=0;i<=max;i++)
  18.     {
  19.         if(a[i])
  20.             cout<<i<<" ";
  21.     }
  22.     cout<<endl;
  23. }
  24.        
  25.        
复制代码
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2022-7-19 12:31:07 | 显示全部楼层
选择:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.         int a[1001],n,i,j;
  5.         cin>>n;
  6.         for(i=1;i<=n;i++){
  7.                 cin>>a[i];
  8.         }
  9.         for(i=1;i<n;i++){
  10.                 for(j=i+1;j<=n;j++){
  11.                         if(a[i]>a[j]){
  12.                                 swap(a[i],a[j]);
  13.                         }
  14.                 }
  15.         }
  16.         for(i=1;i<n;i++){
  17.                 if(a[i]==a[i+1]){
  18.                         a[i]=-1;
  19.                 }
  20.         }                       
  21.         int sum=0;
  22.         for(i=1;i<=n;i++){
  23.                 if(a[i]>0){
  24.                         sum++;
  25.                 }
  26.         }
  27.         cout<<sum<<endl;
  28.         for(i=1;i<=n;i++){
  29.                 if(a[i]>0){
  30.                         cout<<a[i]<<" ";
  31.                 }
  32.         }
  33.         return 0;
  34. }
  35.        
复制代码
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2022-7-19 12:31:38 | 显示全部楼层
插入:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.        
  4. const int MAXN=100;
  5. int n;
  6. int a[MAXN+1];
  7. int num;
  8. int ans[MAXN+1];

  9. void insert_sort(int a[],int begin,int end){
  10.         for(int i=begin+1;i<end;i++){
  11.                 for(int j=i;j>=begin+1;j--){
  12.                         if(a[j]<a[j-1])
  13.                                 swap(a[j],a[j-1]);
  14.                         else
  15.                                 break;       
  16.                 }
  17.         }
  18. }
  19. int main(){
  20.         cin>>n;
  21.         for(int i=1;i<=n;i++){
  22.                 cin>>a[i];
  23.         }
  24.        
  25.         insert_sort(a,1,n+1);
  26.        
  27.         ++num;
  28.         ans[num]=a[1];
  29.         for(int i=2;i<=n;++i){
  30.                 if(a[i]==ans[num]){
  31.                         continue;
  32.                 }
  33.                 ++num;
  34.                 ans[num]=a[i];
  35.         }
  36.         cout<<num<<'\n';
  37.         for(int i=1;i<=num;++i){
  38.                 cout<<ans[i]<<' ';
  39.         }
  40.         cout<<'\n';
  41.         return 0;
  42. }
  43.        
复制代码
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2022-7-19 12:32:24 | 显示全部楼层
冒泡:
  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;

  4. const int MAXN=100;
  5. int n;
  6. int a[MAXN+1];
  7. int num;
  8. int ans[MAXN+1];

  9. void bubble_sort(int a[],int begin,int end){
  10.         bool flag=true;
  11.         while(flag){
  12.                 flag=false;
  13.                 for(int i=begin;i<end-1;++i){
  14.                         if(a[i]>a[i+1]){
  15.                                 flag=true;
  16.                                 swap(a[i],a[i+1]);
  17.                         }
  18.                 }
  19.         }
  20. }

  21. int main(){
  22.         cin>>n;
  23.         for(int i=1;i<=n;i++){
  24.                 cin>>a[i];
  25.         }
  26.        
  27.         bubble_sort(a,1,n+1);
  28.        
  29.         ++num;
  30.         ans[num]=a[1];
  31.         for(int i=2;i<=n;++i){
  32.                 if(a[i]==ans[num]){
  33.                         continue;
  34.                 }
  35.                 ++num;
  36.                 ans[num]=a[i];
  37.         }
  38.         cout<<num<<'\n';
  39.         for(int i=1;i<=num;++i){
  40.                 cout<<ans[i]<<' ';
  41.         }
  42.         cout<<'\n';
  43.         return 0;
  44. }
复制代码
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2022-7-19 12:32:42 | 显示全部楼层
给个意见吧                       
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-7-21 14:04:43 | 显示全部楼层
明明的随机数

四种解法 -- --- -- 回复


楼主采用了四种不同的排序算法来解题
分别为冒泡排序,选择排序,插入排序,桶排序。

通过理解代码

我提出几点 试探性 的建议
---------------------------
1.由于该代码发表在论坛上,请对各部分进行说明
2.请给代码中的变量起一些合适的名字
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-7-21 14:06:08 | 显示全部楼层
不好意思
发错链接了明明的随机数1468


上面的是正确的链接
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2022-7-22 09:55:42 | 显示全部楼层
Jason1129 发表于 2022-7-21 14:04
明明的随机数

四种解法 -- --- -- 回复

谢建议
回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-7-23 14:45:49 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表