突发奇想就写下来了
对数组A中的N(0-100)个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组A中元素的顺序,且相同的正数要具有相同的编号:例如(5,3,4,7,3,5,6)输出(3,1,2,5,1,3,4)
#include <stdio.h>
#include <stdlib.h>
bool check(int nums[],int length){
for(int i=0;i<length;i++)
{
if(nums[i]!=0)return false;
}
return true;
}
int main(){
int nums[100]={0},i=0;
scanf("%d",&i);
int temp = 0;
while(temp<i){
scanf("%d",&nums[temp++]);
}
int *res = (int*)malloc((i)*sizeof(int));
temp = 0;
while(temp<i){
*(res+i)=0;
temp++;
//scanf("%d",&nums[temp++]);
}
int id=1;
while(!check(nums,i)){
bool flag = false;
for(int j=0;j<i;j++)
{
if(nums[j]!=0)nums[j]--;
if(nums[j]==1){
nums[j]=0;
*(res+j)=id;
flag = true;
}
}
if(flag)id++;
}
printf("(");
for(int j=0;j<i;j++)
{
printf("%d",*(res+j));
if(j!=i)printf(",");
}
return 0;
}
如果有什么想法尽管提