필기시험 문제: 숫자 한 줄 을 입력 하고 쉼표 로 구분 하여 숫자 를 정렬 한 후 출력 합 니 다.

6133 단어 알고리즘
제목: 쉼표 로 구분 하여 숫자 를 정렬 하여 출력 합 니 다.구체 적 인 요구: 만약 에 몇 개의 숫자 가 연속 적 이면 가장 큰 숫자 와 가장 작은 숫자 만 출력 한다. 예 를 들 어 입력: 1, 4, 6, 7, 9, 2, 3 수출: 1, 4, 6, 7, 9 기 존의 관례 에 따라 먼저 테스트 사례 1, 입력: 1, 4, 6, 7, 9, 2, 3 수출: 1, 4, 6, 7, 9, 2, 입력: 1, 1, 1, 1, 1 수출: 1, 3.입력: 1, 2, 2, 2, 3, 3, 5 출력: 1, 3, 5
#include
#include
#include
//              
//k        
//count                  
int CountNum(char *arr,int k,int count)
{
    int result=0;
    int i=0;
    while(count>0)
    {
        float ten=pow(10,i);
        result+=(arr[k-1-i]-48)*ten;
        i++;
        count--;
    }

    return result;
}

//               ,  num   
//length arr       
int ConverToNum(char *arr, int length, int *num)
{
    int n=0;
    int k=0;
    int count_temp=0;
    while(k<=length)
    {
        //           ,            ,      
        if(arr[k]==','||arr[k]=='\0')
        {
            num[n]=CountNum(arr,k,count_temp);
            n++;
            count_temp=0;
        }
        else
        {
            count_temp++;
        }

        k++;
    }

    return n;
}

//             
//         ,             
void sort(int *arr, int length)
{
    int temp=0;
    for(int i=0;ifor(int j=0;j1;j++)
        {
            if(arr[j]>arr[j+1])
            {
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
}

//            
int DropRepeat(int *arr,int length, int *temp)
{
    temp[0]=arr[0];
    int i=1;
    int k=1;
    while(iif(arr[i]!=arr[i-1])
        {
            temp[k++]=arr[i];
        }
        i++;
    }
    return k;
}

int main()
{
    char arr[100]={'\0'};
    scanf("%s",&arr);//      
    int length=strlen(arr);

    int num[100]={0};
    int count_num=ConverToNum(arr, length, num);//             

    sort(num,count_num);//         

    int temp[100]={0};
    int count_temp=DropRepeat(num,count_num,temp);//           

    int flag=0;
    printf("%d ",temp[0]);
    for(int i=1;i//          ,                     
        if(temp[i]!=temp[i-1]+1 || temp[i]+1!=temp[i+1])
        {
            printf("%d ",temp[i]);
        }
    }

    getchar();
    return 0;
} 

좋은 웹페이지 즐겨찾기