| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1526 人关注过本帖
标题:在一个字符串中随机取掉几个数求最大值的问题
只看楼主 加入收藏
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:3 
在一个字符串中随机取掉几个数求最大值的问题
编程要求:
    输入一个字符串例如:“456”,在输入一个比字符串长度小的整数,比如说 1。求随机去掉输入的整数个的字符后最大的数值。
即是:字符串“456”,随机去掉1个字符后的值是45,46,56。最大的为56.
在比如输入的字符串“3412”,输入整数2. 则去掉2字符后的数为34,31,32,41,42,12.最大的为42.
    万能的网友,求给一个编程思路。
搜索更多相关主题的帖子: 字符串 最大值 最大的 
2016-09-21 21:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
去掉第一个波谷
然后从前一个位置开始,去掉下一个波谷
……
2016-09-21 22:41
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:0 
回复 2楼 rjsp
不太明白,能不能说的清楚一点呢?

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2016-09-22 08:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
以下是引用Alien_Lee在2016-9-22 08:39:35的发言:

不太明白,能不能说的清楚一点呢?
这不是很自然的事嘛
波谷就是 后一个数字 大于 此处数字 的位置
去掉波谷后,下一个值移动到此,就变大了
“变大”这个动作发生在越左的位上,则结果整体值越大

程序代码:
#include <stdio.h>

char* foo( char* s, size_t n )
{
    for( size_t i=0; n && s[i]; ++i )
    {
        if( s[i+1]=='\0' || s[i]<s[i+1] ) // 如果i处是波谷
        {
            // 删除i位置上的数,后面的数往前移动
            for( size_t j=i; s[j]=s[j+1]; ++j )
            {
                int x = 0;;
            }
            --n;

            // 删除之后,i的前一个位置也可能会变成波谷
            if( i != 0 ) --i;
            --i;
        }
    }
    return s;
}

int main( void )
{
#define TEST(s,n) do { char str[]=s; puts(foo(str,n)); } while(0)

    TEST( "456", 1 );

    TEST( "111", 1 );
    TEST( "111", 2 );

    TEST( "211", 1 );
    TEST( "211", 2 );

    TEST( "1122112211", 1 );
    TEST( "1122112211", 2 );
    TEST( "1122112211", 3 );

#undef TEST
}

2016-09-22 09:25
快速回复:在一个字符串中随机取掉几个数求最大值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017618 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved