Bootstrap

华为OD机考

第一行输入每行数据个数。
第二行输入属性一。
第三行输入属性二。


输入
4
100 100 120 130
40 30 60 50
输出
2 1 3 4

输入
3
90 110 90
45 60 45
输出
1 3 2


属性一升序。
属性二在属性一相同的情况下内部升序。

输入之原位角标在前则输出在前原则。
输出角标变化后之原角标。


存一个原输入作为检索参照物。
先给属性一排序。
再在属性一排好的约束下给属性二排序。
按属性二去重。
按顺序检索属性二在在原输入中的位置。
输出原输入的角标即可。


程序有点问题,有些情况不符合。


#include<stdio.h>

int n,a,b;
int len[100],wgh[100],asb1[100],asb2[100],rst[100];
int i,j,k;


#include<stdio.h>

int n,a,b;
int len[100],wgh[100],asb1[100],asb2[100],rst[100];
int i,j;


int main()
{
    scanf("%d\n",&n);//获取学生个数
    for(i = 0; i < n; i++)//获取学生身高
    {
       scanf("%d ",&a); 
       len[i] = a;
    }
    for(i = 0; i < n; i++)//获取n个学生体重
    {
       scanf("%d ",&b); 
       rst[i]= b;
       wgh[i] = rst[i];
    }
    
   
    //先排一遍身高
    //
    for(i = 0;i <= n ;i++)
    {
        for(j =1;j<n;j++)
        {
            if(len[j-1] > len[j])
            {
                asb1[j] = len[j-1];
                asb2[j] = wgh[j-1];
                len[j-1] = len[j];
                wgh[j-1] = wgh[j];
                len[j] = asb1[j];
                wgh[j] = asb2[j];
            
            }
        }
 
    }
    //再排一遍体重。
    for(i = 0;i < n ;i++)
    {
        for(j =1;j<=n;j++)
        {
            if((len[j-1] == len[j])&&(wgh[j-1] > wgh[j]))
            {
                asb2[j] = wgh[j-1];
                asb1[j] = len[j-1];
                wgh[j-1] = wgh[j];
                len[j-1] = len[j];
                wgh[j] = asb2[j];
                len[j] = asb1[j];
            }
        }
// printf("%d %d\n",len[i],wgh[i]);
    }
    
 //去重
        int m=n;
        for(i=0;i<m;i++)
         {
             for(j = i+1;j<m;j++)
             {
                 if(wgh[i]==wgh[j])
                 {
                     for(k=j;k<m;k++)
                     {
                         wgh[k]=wgh[k+1];
                     }
                     m--;
                     j--;
                 }   
                 
                 
             }
            //printf("%d\n",wgh[i]);
         }
    
    for(i=0;i<m;i++)
     {
         for(j=0;j<n;j++)
         {
             if(rst[j] == wgh[i])
             {
                 printf("%d ",j+1);
             }
         }
     }
    
    
}
;