尋找最大數

題目描述

請在整數 n 中刪除m個數字, 使得餘下的數字按原次序組成的新數最大,

比如當n=92081346718538,m=10時,則新的最大數是9888

輸入:

請在整數 n 中刪除m個數字, 使得餘下的數字按原次序組成的新數最大,

比如當n=92081346718538,m=10時,則新的最大數是9888

輸出:

每組測試數據的輸出佔一行,輸出剩餘的數字按原次序組成的最大新數

AC代碼如下:

#include <stdio.h>
#include <iostream>
#include <string.h>
int main()
{
	int i,k,t,m,end,flag,len;
	char a[110],temp;
	scanf("%d",&t);
		while(t--)
		{
			memset(a,0,sizeof(a)); //功能:把buffer所指內存區域的前count個字節設置成字符c。返回指向buffer的指針。
			scanf("%s %d",a,&m);
			i=k=0, end=m,len=strlen(a);
			while(end<len)
			{
				for(i=flag=k,temp=a[i];i<=end;i++)
				{
					if(a[i]>temp)
					{
						flag=i;
						temp=a[i];
					}
				}
				k=flag+1;
				end++;
				printf("%c",temp);
			}
			printf("\n");
		}
return 0;
}

運行結果如下:


想法:

 每次求出局部最優以達到全局最優


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章