首页 > 其他分享 >NYOJ-448-寻找最大数

NYOJ-448-寻找最大数

时间:2023-02-02 11:33:32浏览次数:50  
标签:10 448 数字 最大数 int max NYOJ 位数






寻找最大数



1000 ms  |  内存限制: 65535



2



请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,

比如当n=92081346718538,m=10时,则新的最大数是9888

 



第一行输入一个正整数T,表示有T组测试数据

每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)

输出 每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数 样例输入

2 92081346718538 10 1008908 5

样例输出

9888 98





题目分析: 这个贪心算法就有点小难理解了,首先要分析从什么位置开始查找,因为查找过程还不能改变原来数字的顺序。


9 2 0 8 1 3 4 6 7 1 8 , 5 3 8 10


0 1 2 3 4 5 6 7 8 9 10 ,11 12 13


来看这个数据,上边是原数据,下边是数据在数组中的脚码,总长度为 14 那么去掉 10 位后还有4 位那么次4位数的首位一定是在分号也即是10号之前0号后的数字中产生此数字的位置记为 k 而且这个数还是这之间最大的数,想一想是不是。那么第2位数一定是在11号之前在k+1号之后产生对吧此数子的位置记为k,第3位一定是在12号之前k+1之后产生此数字位置记为k,第4位一定是在13号前k+1之后产生吧。就是这个思路下面代码就好理解了。



<span style="font-size:24px;">#include<cstdio>
#include<cstring>
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
char a[101];
int m;
scanf("%s%d",a,&m);
int len=strlen(a);
int weishu=len-m;
int j=0,i,k=0;
char max='0';
while(k<weishu)
{
int max=0;
for(i=j;i<=m+k;i++)// 此处i<=m+k 一定带有=号
{
if(max<a[i])
{
max=a[i];
j=i;
}
}
j++;k++;
printf("%c",max);
}
printf("\n");
}
return 0;
}</span>










标签:10,448,数字,最大数,int,max,NYOJ,位数
From: https://blog.51cto.com/u_14235050/6033426

相关文章

  • 【题解】P4482 [BJWC2018]Border 的四种求法
    思路SAM+树剖。好仙的题啊,做了一天。令\(\operatorname{lcs}(i,j)\)表示长度为\(i,j\)的前缀的最长公共后缀长度,则题目中的border可以等价转化成:求最大且满足......
  • P2448 无尽的生命
    题目传送门题意简述看到题目显而易见是求逆序对个数。思路分析看到数据范围\(x_i,y_i\le2^{31}-1\),\(k\le10^5\)。数据值域大但是个数少,且与数据之间的大小关系有......
  • leetcode简单(数组,字符串,链表):[168, 171, 190, 205, 228, 448, 461, 876, 836, 844]
    目录168.Excel表列名称171.Excel表列序号190.颠倒二进制位205.同构字符串228.汇总区间448.找到所有数组中消失的数字461.汉明距离876.链表的中间结点836.矩形重......
  • 【排序贪心】【字符串】LeetCode 179. 最大数
    题目链接179.最大数思路转自宫水三叶大佬的题解对于nums中的任意两个值a和b,我们无法直接从常规角度上确定其大小/先后关系。但我们可以根据「结果」来决定a和......
  • P1198 JSOI2008 最大数
    P1198JSOI2008最大数-洛谷|计算机科学教育新生态(luogu.com.cn)采用ST表维护RMQ。对于插入操作,设插入后数列长度变为\(n\),我们只需重新修改满足\(i+2^j-......
  • 448. 找到所有数组中消失的数字
    找到所有数组中消失的数字给你一个含n个整数的数组nums,其中nums[i]在区间[1,n]内。请你找出所有在[1,n]范围内但没有出现在nums中的数字,并以数组的形式返......
  • 找到最大数(函数模板)
    题目描述利用函数模板求不同类型的5个数最大值(分别考虑整数、单精度、长整数的情况) 输入分别输入5个int型整数、5个float型实数、5个long型正整数。 输出分......
  • 输出10个数中最大数范例
    范例1intarr[]={1,2,3,4,5,6,7,8,9,10};//输出10个数中最大数intmax=0;intsz=sizeof(arr)/sizeof(arr[0]);inti=0;for(i=0;i<=sz;i++){ if(a......
  • 1610.maximum-number-of-visible-points 可见点的最大数目
    问题描述1610.可见点的最大数目解题思路利用atan2函数,即可将斜率转化为\(-\pi\sim\pi\)的角度;扩充数组,令angle[n+i]=angle[i]+360,使角度数组长度为2*n,这样......
  • [LeetCode] 1323. Maximum 69 Number 6和9组成的最大数字
    Youaregivenapositiveinteger num consistingonlyofdigits 6 and 9.Return themaximumnumberyoucangetbychanging atmost onedigit(6* becom......