怪異的排列

Description

將輸入的N個整數,按照這些數的逆序數從小到大排序輸出。 
數字的逆序:例如數字是123,則逆序數爲321 
例如輸入的數據爲 122,432,321 
則輸出 321 122 432 
注意:輸出還是那些數,只是排序依據是其逆序數。 

Input

第一行爲N (N<100) 
其後的N行,每行一個正整數(均小於等於10000) 

Output

按逆序數從小到大次序輸出,一行一個數

Sample Input

3
122
432
321

Sample Output

321
122

432

這題剛開始拿到手,哇,覺得好容易呀,做了之後發現總是不能accept,就很難受。冥思苦想後,猛然發現僅僅交換原來的數字是不夠的,還要交換它的逆序數纔可以。

代碼如下:

#include<stdio.h>

int main()
{
	int a[100],c[100]={0};
	int i,n,j=0,k,t;
	scanf("%d",&n);	
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);

	for(i=0;i<n;i++)
	{
		t=a[i];
		while(t!=0)
		{
			c[i]=c[i]*10+t%10;
			t=t/10;
		}
	}
	for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
		{
			if(c[i]>c[j])
			{
				t=a[i];
				a[i]=a[j];
				a[j]=t;
				t=c[i];
				c[i]=c[j];
				c[j]=t;
			}
		}
	for(i=0;i<n;i++)
		printf("%d\n",a[i]);
	return 0;
}

發佈了34 篇原創文章 · 獲贊 17 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章