9 条题解

  • 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-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
                    标签
                    (无)
                    递交数
                    1143
                    已通过
                    334
                    上传者