nylgacm_1057_최대 수 찾기 (3)

2982 단어 알고리즘
묘사 하 다.
한 개의 정수 N 을 제시 하고, 매번 인접 한 두 개의 숫자 를 이동 할 수 있 으 며, 최대 K 번 이동 하여 새로운 정 수 를 얻 을 수 있다.
이 새로운 정수 의 최대 치 는 얼마 입 니까?
입력
다 중 테스트 데이터.
각 조 의 테스트 데 이 터 는 한 줄 을 차지 하고 각 줄 에 두 개의 수 N 과 K (1 * 8201; ≤ * 8201; N ≤ * 8201; 10 ^ 18; 0 * 8201; ≤ * 8201; K * 8201; ≤ * 8201; 100) 가 있 습 니 다.
출력
각 그룹의 테스트 데이터 의 출력 은 한 줄 을 차지 하고 출력 이 이동 한 후에 얻 은 새로운 정수 의 최대 치 를 차지한다.
샘플 입력
1990 1
100 0
9090000078001234 6

샘플 출력
9190
100
9907000008001234
  :            ,                 。
      ,            :
 、          ,        ;
 、       k      :
	 k<     ,    k             , k = k -              ;        2+k              ,k = k -  2~2+k                   ;    ,  、   。。。
	 k>     ,    k (     )           ;                 。	
	for(int i=     p; i < p + k; i++)
	{
	}
	if(  )
	{
		  k ;
	}
	      p    ;

#include <stdio.h>
#include <string.h>

int main() {
	char s[21],ch[21];
	int k;
	while(~scanf("%s %d", s, &k))
	{
		int p1=0, p2=0;
		while(k){
            if(p1 == strlen(s)) break;
			for(int i = p1; i <=p1+ k && i<strlen(s); i++)
			{
				if(s[i]>s[p2])
					p2 = i;
			}
			if(p2 > p1)
			{
				k = k-(p2 - p1);
				char c;
				for (int j = p2;j > p1;j--)
                {
                    c = s[j];
                    s[j] = s[j-1];
                    s[j-1] = c;
                }
			}
            p1++;
            p2 = p1;
		}
		puts(s);
	}
	return 0;
}



좋은 웹페이지 즐겨찾기