| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 649 人关注过本帖
标题:用N个1-9的数字顺序组合成一个多位数,现要求从中删除M个数字(M<N),使得 ...
只看楼主 加入收藏
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
结帖率:83.33%
收藏
已结贴  问题点数:5 回复次数:4 
用N个1-9的数字顺序组合成一个多位数,现要求从中删除M个数字(M<N),使得剩下的数为最大;
用N个1-9的数字顺序组合成一个多位数,现要求从中删除M个数字(M<N),使得剩下的数为最大;

#include<stdio.h>
#include<string.h>
int main()
{
    int m,n,i,j,t;
    char a[10]="\0",b[10]="\0";
    scanf("%s%d",a,&m);
    n=(int)strlen(a);
    if(m==n)
    {
        printf("0\n");
        return 0;
    }
    t=-1;
    for(j=0;j<n-m;j++)
    {
       t++;
        b[j]=a[t];
        for(i=t;i<m+j+1;i++)
        {
            if(b[j] < a[i])
            {
                b[j]=a[i];
                t=i;                   t起什么作用???
            }
        }
    }
    printf("%s\n",b);
    return 0;
}


[ 本帖最后由 huwengui 于 2011-6-17 12:25 编辑 ]
搜索更多相关主题的帖子: return 
2011-06-16 23:43
绯苍幻想曲
Rank: 2
等 级:论坛游民
帖 子:34
专家分:49
注 册:2010-11-29
收藏
得分:2 
程序代码:
#include<stdio.h>
#include<string.h>
#define N 21
void Strcopy(char *p1,const char *p2,int flag);
int main()
{
    char max[N],a[N],b[N];
    int m,i=0;
    scanf("%s%d",max,&m);
    for(;m>0;m--)
    {
        strcpy(b,max+1);
        for(i=0;max[i]!=0;i++)
        {
            Strcopy(a,max,i);
            if(strcmp(b,a)>0)strcpy(b,a);
        }
        strcpy(max,b);
    }
    puts(max);
}
void Strcopy(char *p1,const char *p2,int flag)
{
    int i=0;
    for(;*p2!=0;p2++,i++)
    {
        if(i==flag)continue;
        else
        {
            *p1=*p2;
            p1++;
        }
    }
    *p1=0;
}
2011-06-17 00:37
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:2 
老早以前论坛里就有过这个问题了。那个里面还可以有 0
看这里:
https://bbs.bccn.net/thread-337057-1-1.html

不过,顺序组合是什么意思?

楼上算法有误
1. if(strcmp(b,a)>0)strcpy(b,a); 应该是 <
2. 上述错误修改后,可用 987654321 5 进行测试。结果错误

[ 本帖最后由 voidx 于 2011-6-17 01:59 编辑 ]
2011-06-17 01:10
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:2 
先将这个数分为数组,排序后,从后面一次删除m个数,前面的数组合应该是最大的。
2011-06-17 06:54
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 4楼 hjywyj
这个思路不对
2011-06-17 13:40
快速回复:用N个1-9的数字顺序组合成一个多位数,现要求从中删除M个数字(M<N), ...
数据加载中...
 
   



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

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