NYOJ 283 대칭 정렬

4850 단어 정렬
주소
제목 분석: 당신 은 이미 프로그램 을 다 썼 다 는 뜻 입 니 다. 안 타 깝 게 도 당신 의 프로그램 출력 방식 은 사장 님 이 좋아 하지 않 습 니 다!However, your boss does not like the way the output looks, and instead wants the output to appeared more symmetric, with the shorter strings at the top and bottom and the longer strings in the middle.그래서 처음부터 입력 한 문자열 의 길 이 는 순서 와 무관 하 다 고 생각해 야 합 니 다!여기까지 이해 하면 문제 가 많 지 않 아 이미 풀 렸 다!즉, 먼저 문자열 을 정렬 하고 짧 은 것 은 위 에서 긴 것 은 아래 에 있 으 며, 그 다음 에 "symmetric" 의 출력 은 OK 입 니 다!
생각:
이 문 제 는 입력 한 문자열 을 짧 은 것 에서 긴 것 으로 정렬 한 다음 출력 을 바 꾸 는 것 입 니 다.홀수 이면 출력 1, 3, 5, 7, 6, 4, 2.짝수 이면 출력 1, 3, 5, 6, 4, 2.
코드 는 다음 과 같 습 니 다:
 1 #include <iostream>

 2 #include <string>

 3 #include <algorithm>

 4 using namespace std;

 5 string str1[25],str2[25];

 6 bool cmp(string a,string b)

 7 { 

 8  return a.length()<b.length();

 9 }

10 int main()

11 {

12      int n,i,j,k,t=1;

13      while(cin>>n,n)

14      {

15         j=0;k=n-1;

16         for( i = 0 ; i < n ; i ++ )

17         cin>>str1[i];

18         sort(str1,str1+n,cmp);

19         for( i = 0 ; i < n ; i ++ )

20         {

21             if( i % 2 == 0 )

22             str2[j++] = str1[i];

23             else

24             str2[k--] = str1[i];

25         }

26         cout<<"SET "<<t++<<endl;

27         for(i=0;i<n;i++)

28         cout<<str2[i]<<endl;

29      }

30      return 0;

31 }

32                 

 
 
 

좋은 웹페이지 즐겨찾기