1 条题解

  • 0
    @ 2025-4-12 21:52:30

    C :

    #include<stdio.h>
    # define N 10000
    int del(int a[],int n);
    int bubblesort(int a[],int n);
    int locate(int a[],int b,int n);
    int main()
    {
            int a[N],b[N],i,j,n,num,z;
            while(scanf("%d",&n)!=EOF)
            {
                    for(i=0;i<n;i++)
                    {
                            scanf("%d",&a[i]);
                            b[i]=a[i];
                    }
                    bubblesort(a,n);
                    num=del(a,n);                
            for(z=0;z<n-1;z++)
                            printf("%d ",locate(a,b[z],num));
                    printf("%d\n",locate(a,b[n-1],num));
            }
            return 0;
    }
    int del(int a[],int n)
    {
            int i,j,k;
            for(i=0,j=i+1;j<n;j++)
            {
                    if(a[i]!=a[j])
                    {
                            if((k=j-i-1)!=0)
                            while(j<n)
                                    {
                                            a[j-k]=a[j];
                                            j++;
                                    }
                                    i++;
                                    j=i;
                                    n=n-k;
                    }
            }
            if(a[n-2]==a[n-1])
                            n--;
            return n;
    }
    int bubblesort(int a[],int n)
    {
       int i,j,temp;
       for(i=0;i<n;i++)
               for(j=i;j<n;j++)
                       if(a[i]>a[j])
                       {
                  temp=a[i];
                              a[i]=a[j];
                              a[j]=temp;
                       }
                      return 0;
    }
    int locate(int a[],int b,int n)
    {
            int i,j,k;
        for(i=0;i<n;i++)
                    if(a[i]==b)
                            return i+1;
    }
    

    C++ :

    #include<stdio.h>
    #include <algorithm>
    #include <stdlib.h>
    #include <map>
    #include <string.h>
    using namespace std;
    
    int main(){
            int n,*arr,*arr2;
            map<int,int> mymap;
            while(scanf("%d",&n) != EOF){
                    arr =(int*)malloc(sizeof(int)*n);
                    arr2 = (int*)malloc(sizeof(int)*n);
                    for(int i=0;i<n;i++){
                          scanf("%d",&arr[i]);
                          arr2[i] = arr[i];
                    }
                    sort(arr2,arr2+n);
                    int index = 0;
                    for(int i=0; i<n; i++){
                            mymap.insert(pair<int,int>(arr2[i],index));  //插入数字和对应的  排名
                            index ++;
                            if( i!=0 && arr2[i]==arr2[i-1])
                                    index --;
                    }
                    for(int i=0; i<n; i++){
                            if(i==0)
                                    printf("%d",mymap.find(arr[i])->second+1);
                            else
                                    printf(" %d",mymap.find(arr[i])->second+1);
                    }
                    printf("\n");
            }
            return 0;
    }
    

    Pascal :

    program p2040(Input,Output);
    var
     n,i,j:longint;
     a,b,t:array[1..19999] of longint;
    procedure qsort(l,r:longint);
    var
     i,j,p,mid:longint;
    begin
     i:=l; j:=r;
     mid:=a[(l+r) div 2];
     repeat
      while a[i]<mid do inc(i);
      while a[j]>mid do dec(j);
      if i<=j then
       begin
        p:=a[i]; a[i]:=a[j]; a[j]:=p;
        p:=t[i]; t[i]:=t[j]; t[j]:=p;
        inc(i); dec(j);
       end;
     until i>j;
     if l<j then qsort(l,j);
     if i<r then qsort(i,r);
    end;
    begin
    while not eof do
    begin
     readln(n);
     for i:=1 to n do
      begin
       read(a[i]); b[i]:=a[i]; t[i]:=i;
      end;
     qsort(1,n);
     for i:=1 to n do
      begin
       for j:=1 to n do
        if b[i]=a[j] then
         begin
          if i<n then
           write(j,' ')
          else
           writeln(j);
         end;
      end;
    end;
    end.
    
    • 1

    信息

    ID
    2113
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者