贪心----寻找最大数

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath>

using namespace std;

int main() {  int ncase;  char s[110], ans[110];  int m, len, sign, max, num;  scanf("%d", &ncase);  while(ncase--)  {   num = sign = 0;   scanf("%s%d", s, &m);   len = strlen(s);   for(int i = 0; i < len - m; ++i) //找m次最大值   {    max = -1;    for(int j = sign; j <= m + i; ++j) //j的范围不能错~保证位数    {     if(max < s[j] - ‘0‘)     {      max = s[j] - ‘0‘;      sign = j;     }    }    ans[num++] = s[sign++];   }   for(int i = 0; i < len - m; ++i)    cout<<ans[i] - ‘0‘;   cout<<endl;  }  return 0; }

时间: 2024-11-10 02:21:27

贪心----寻找最大数的相关文章

NYOJ448 寻找最大数 【贪心】

寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538,m=10时,则新的最大数是9888 输入 第一行输入一个正整数T,表示有T组测试数据 每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数) 输出 每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数 样例输入

NYOJ448_寻找最大数【贪心】

寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538,m=10时,则新的最大数是9888 输入 第一行输入一个正整数T,表示有T组测试数据 每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数) 输出 每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数 样例输入

NYOJ-448 寻找最大数(贪心)

NYOJ-448 寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538,m=10时,则新的最大数是9888 输入 第一行输入一个正整数T,表示有T组测试数据每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数) 输出 每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大

NYOJ 1057 寻找最大数(三)(关于贪心算法的认识)

以前做贪心题目都第一步对数据进行从大到小的排序,大部分贪心题目的的处理方法也是这样.但是NYOJ的1057题,在解题中 并不需要排序,一时间都没有意识到是贪心题.在看了讨论区之后意识到要用贪心的思想,才解出题目.认识到贪心算法并非是排序后再处理的机械操作,而是从局部寻求最优解的思想. 原题如下: 寻找最大数(三) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数. 求这个新的整数的最大值

Num 27 : NYOJ : 0448 寻找最大数 [ 贪心 ]

一道经典的贪心问题:如题: 寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538,m=10时,则新的最大数是9888 输入 第一行输入一个正整数T,表示有T组测试数据 每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数) 输出 每组测试数据的输出占一行,输出剩余的数字按原次

NYOJ 448 寻找最大数【贪心】

寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538,m=10时,则新的最大数是9888 输入 第一行输入一个正整数T,表示有T组测试数据 每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数) 输出 每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数 样例输入

寻找最大数(贪心)

寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538,m=10时,则新的最大数是9888 输入 第一行输入一个正整数T,表示有T组测试数据每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数) 输出 每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数 样例输入 2

寻找最大数(nyoj448)(贪心)

寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538,m=10时,则新的最大数是9888 输入 第一行输入一个正整数T,表示有T组测试数据 每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数) 输出 每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数 样例输入

nyoj寻找最大数(三)

 /*寻找最大数(三) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数. 求这个新的整数的最大值是多少. 输入多组测试数据. 每组测试数据占一行,每行有两个数N和K (1≤N<=10^18; 0≤K≤100). 输出每组测试数据的输出占一行,输出移动后得到的新的整数的最大值.样例输入1990 1 100 0 9090000078001234 6 样例输出9190 100 99070