10 条题解

  • 1
    @ 2024-4-6 11:49:09

    STL容器直接套模板

      • #include<bits/stdc++.h>
    • using namespace std;

      #define pb(s) push_back(s)

      int main()

      {

      int n;

      cin>>n;

      vector<int>v;

      while(n--)

      {

      int m;

      cin>>m;

      v.pb(m);

      }

      sort(v.begin(),v.end());

      auto list=unique(v.begin(),v.end());

      v.erase(list,v.end());//删除重复元素

      set<int> s(v.begin(), v.end());

      cout << s.size() << endl;

      for(const auto &num:v)

      cout<<num<<" ";

      cout<<endl;

      return 0;

      }

    • 1
      @ 2023-9-28 8:43:54

      分享一位csdn大神的神级脑回路 我愿称之为最强 //这个程序做的事形象点就是:这里有一千个空位置(a[1001]={0}),这一千个位置标号就是从一到一千,然后来N个学生,第一个学生学号是t,t位置肯定是空的(a[t]==0),学生就站过去(这时候a[t]==0),学生t因为第一个来很开心;接下来学生学号b(b<t),就站到b位置,而且站在了学生t的前面,学生t就有些不爽,有一个学生学号c(c>t),就站到c位置,站在了学生t的后面,学生t露出了骄傲的微笑;如果这时候又有一个学号是t的,他位置有人了,就只能悄悄地离开,不留下一片云彩,第一个学生t没什么反应,…。最后看几个位置有人(a[t]! =0)(等于第一个学生t不爽和小骄傲的总次数),然后让他们从小到大报数(输出排序后的随机数)。

      这思路顶礼膜拜!

      #include<stdio.h>
        int main(){
            int N,a[1001]={0},t,i;
            int count=0; 
           scanf("%d",&N);
            for(i=0;i<N;i++){
               scanf("%d",&t);
                if(a[t]==0){
                    a[t]=t;
                   count++;
              }
           }
           printf("%d\n",count);
           for(i=0;i<1001;i++){
               if(a[i]!=0)
                   printf("%d ",a[i]);
           }
           return 0;
       }
      
      • 0
        @ 2025-11-7 19:28:17
        #include<bits/stdc++.h>
        using namespace std;
        int main(){
            int n, a[1009],i=0,temp,b[1009],j=0;
            scanf("%d",&n);
            temp=n;
            while(temp--){
                scanf("%d",&a[i]);
                i++;
            }i=0;
            sort(a,a+n);
            while(i<n){
                if(a[i]!=a[i+1]){b[j]=a[i];j++;}
                i++;
            }
            printf("%d\n",j);i=0;
            while(i<j){
                printf("%d ",b[i]);
                i++;
            }
        }
        
        • 0
          @ 2025-10-7 15:12:26

          #include <stdio.h> int main() { int x; scanf("%d",&x); int a[10005]; int b[10005]; for ( int i=0;i<x;i++) { scanf("%d",&a[i]); } for ( int i=0;i<x-1;i++) { for ( int j=0;j<x-1-i;j++) { if ( a[j]>a[j+1]) { int temp = a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } int count = 0; for ( int i = 0; i < x; i++) { if (i == 0 || a[i] != a[i - 1]) { b[count++] = a[i]; } } printf("%d\n",count); for ( int i=0;i<count;i++) { printf("%d ",b[i]); } return 0; }

          • 0
            @ 2025-10-5 14:07:55

            先用一个数组先存下,然后用另一个数组存下排序和去重后的数

            #include<stdio.h>
            int main()
            {
                int a[10001],n,b[10001],temp,sum=0;
                scanf("%d",&n);
                for(int i=0;i<n;i++){
                    scanf("%d",&a[i]);
                }for(int j=0;j<n;j++){
                    for(int k=j+1;k<n;k++){
                        if(a[j]>a[k]){
                            temp=a[j];
                            a[j]=a[k];
                            a[k]=temp;
                        }
                    }
                }if(n>0){
                    b[sum]=a[0];
                    sum++;
                    for(int l=1;l<n;l++){
                        if(a[l]!=a[l-1]){
                            b[sum]=a[l];
                            sum++;
                        }
                    }
                }printf("%d\n",sum);
                for(int i=0;i<sum;i++){
                    printf("%d ",b[i]);
                }
                return 0;
            }
            
            • 0
              @ 2025-1-8 13:09:22

              我就不分享代码了。思路利用容器的思想,我只学习了桶排序,所以我分享桶排序的思想:用数组接受所得到的随机数,再通过桶排序(开一个很大的数组,全部为0,如果输入得数和数组下标相同就放进去,并且进行++,一直这样进行,如果数组的值大于1说明有好几个这种数),由小到大排列,但排列完成后输出时,通过在内部一个while循环(也就是,先for循环输出,里面嵌套while看是否有数>1,有的话让它只输出一个即可)看是否有 ,有重复数字的就只输出一个。剩下的数字输出正常输出就行。这就是借助一个容器的思想。当然你也可以采取其他排序,只需要和我的去重思路差不多就行。

              • 0
                @ 2024-10-17 23:51:50

                //肝了一个小时写出来了 #include<stdio.h>

                int main() { int a[888],n,temp,i,j,x; scanf("%d",&n);

                scanf("%d",&a[0]);

                for(i=1;i<n;i++) { scanf("%d",&a[i]);

                } for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(a[i]==a[j])

                { for(x=j;x<n;x++) //借助变量x,删除下标为j的元素,并将j后面的元素全部向前一步。

                { a[x]=a[x+1]; } j--;//j后面的每个元素向前移动1,使后面的元素仍占j位置,j不变 n--; //数据元素总数减一

                } } } printf("%d\n",n); for(i=1;i<n;i++) //冒泡必学的

                { for(j=0;j<n-i;j++) { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(i=0;i<n;i++) { printf("%d\n",a[i]);

                } return 0; } //虽然超时了,但是不能丢分儿

                • 0
                  @ 2023-10-7 20:12:18
                  
                  #include<stdio.h>
                  int a[1001];
                  int main()
                  {   int n;
                  	scanf("%d",&n);
                  	int tmp;
                  	for(int i=1;i<=n;i++)
                  	   {
                  	   	scanf("%d",&tmp);
                  	   	a[tmp]++;
                  	   }
                  	   int sum=0;
                  	   for(int i=1;i<=1000;i++)
                  	       {
                  	       	if(a[i])
                  	       	  {  
                  	       	  	sum++;
                  			  }
                  		   }
                  		   printf("%d\n",sum);
                  		for(int i=1;i<=1000;i++)
                  	       {
                  	       	if(a[i])
                  	       	  {  
                  	       	  	printf("%d ",i);
                  			  }
                  		   }
                  	return 0;
                  	   
                  }
                  
                  • 0
                    @ 2023-10-5 10:53:01
                    #include<stdio.h>
                    int main()
                    {
                        int n;
                        scanf("%d",&n);
                        int a[1000+5],box[1000+5]={0};
                        int cnt=0;
                        for(int i=0;i<n;i++){
                            scanf("%d",&a[i]);
                            box[a[i]]++;
                        }
                        for(int i=0;i<=1005;i++){
                            if(box[i]>0){
                                cnt++;
                            }
                        }
                        printf("%d\n",cnt-1);
                        for(int i=0;i<=1000;i++){
                            if(box[i]>0){
                                printf("%d ",i);
                                
                            }
                        }  
                        return 0;
                    }
                    
                    • 0
                      @ 2023-10-5 10:50:15
                      #include <stdio.h>
                      #include <iostream>
                      #include <set>
                      int oi[1100];
                      
                      using namespace std;
                      
                      int main()
                      {
                          int m;
                          scanf("%d",&m);
                          set<int> st;
                          for (int i=0;i<m;i++)
                          {
                              int pick;
                              scanf("%d",&pick);
                              st.insert(pick);
                          }
                          cout << st.size() << endl;
                          	for(set<int>::iterator it = st.begin(); it != st.end(); it++)
                      	{
                      		cout << *it <<' ';
                      	}
                      	
                          return 0;
                      }
                      
                      • 1

                      信息

                      ID
                      136
                      时间
                      1000ms
                      内存
                      128MiB
                      难度
                      6
                      标签
                      (无)
                      递交数
                      1184
                      已通过
                      350
                      上传者