| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 539 人关注过本帖
标题:数字问题等你来解决~~~
只看楼主 加入收藏
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:9 
数字问题等你来解决~~~
大家先来分析分析思路~~~~~~~~~~~~~~

----键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按左右次序组成一个新的正整数。对给定的N和S,寻找一种删数规则使得剩下得数字组成的新数最小。
输入:1675428
      3
输出:1428
输入:1645827
      3
输出:1427
搜索更多相关主题的帖子: 正整数 先来 
2011-04-24 17:41
迦襄
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2011-4-10
收藏
得分:2 
从左到右,删掉由升序到降序的那个转折数,比如:1675428中第一个删除的数是7,余下165428,再删6,以此往后····
2011-04-24 17:48
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:0 
回复 2楼 迦襄
眼力不错啊   真快
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-04-24 17:52
迦襄
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2011-4-10
收藏
得分:0 
这只是巧合而已,我今天上午刚遇到的这个问题。
2011-04-24 17:54
dengjinbao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:64
专家分:119
注 册:2011-3-22
收藏
得分:0 
假如求最大数的呢
该怎样
2011-04-24 18:03
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:0 
这个还是有问题的   看看

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
main()
{
int num,i,m,cnt=0;
char a[10];
scanf("%d",&num);

itoa(num,a,10);  //将数字转化为字符串

int n;
n=strlen(a);  //  长度

scanf("%d",&m);

while(cnt<=m)
 {
     for(i=1;i<n-cnt;i++)
    { if(a[i-1]<a[i]&&a[i]>a[i+1]) //升降序的转折数a[i]
        a[i]=a[i+1];    //后面的覆盖前面的
            cnt++;  
     }
 }
for(i=0;i<n-m;i++)
printf("%c",a[i]);
}

[ 本帖最后由 huwengui 于 2011-4-24 20:44 编辑 ]
2011-04-24 20:30
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:8 
2011-04-24 20:48
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:0 
#include <stdio.h>
#include <string.h>

int main() {
    char a[100] = {0}, i, j = 0, n, s = 0, is_1st_digit = 1;
    int k;
            
    printf("Please input number a: ");
    scanf("%s", a);
    n = strlen(a);
    printf("Please tell me how many digits to be deleted: ");
    scanf("%d", &k);
                                
    while (k > 0 && k < n - s) {
              for (i = s; i <= s + k; i++) {
            if (a[i] < a[j]) {
                if (!is_1st_digit || a[i] != '0') {
                    j = i;
                }
            }
        }
        for (i = s; i < j; i++) {
            a[i] = -1;
        }
        k -= j - s;
        j++;
        s = j;

              is_1st_digit = 0;
    }
   
    if (k > 0) {
               n = s;
    }
   
    // printf() the answer.
    for (i = 0; i < n; i++) {
        if (a[i] != -1) {
            printf("%c", a[i]);
        }
    }
    printf("\n");
    return 0;
}


[ 本帖最后由 huwengui 于 2011-4-24 22:34 编辑 ]
2011-04-24 22:33
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 8楼 huwengui
转我的代码请注明
2011-04-24 23:59
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
回复 楼主 huwengui
输入:1675428
      3
输出:1428
输入:1645827
      3
输出:1427
楼主,我想问一下,1428大还是1248大,1427小还是1247小。楼主不是要找那一个最小的数吗?
2011-04-25 07:00
快速回复:数字问题等你来解决~~~
数据加载中...
 
   



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

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