| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6165 人关注过本帖, 2 人收藏
标题:再发一个上机c程序
只看楼主 加入收藏
Loli
Rank: 1
来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
收藏
得分:0 
[bo][un]界水乘风[/un] 在 2008-6-3 14:27 的发言:[/bo]

我是衰人,
闪了。

????????



" border="0" />[color=white]
2008-06-03 14:36
wangjiang123
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-03 16:51
chmlqw
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2007-10-11
收藏
得分:0 
// Delete number
// 删除一个数(num)中K位后, 找出最小值

#include <stdio.h>

#define N 10        // INT 最大只有10位

int main()
{
    int DeleteNumber(int n, int k);

    int num = 0;
    int k = 0;        

    printf("Input a number and k:");
    scanf("%d %d", &num, &k);

    num = DeleteNumber(num, k);

    printf("The number is : %d\n", num);

    return 0;
}

int DeleteNumber(int num, int k)
{
    int GetEveryDigit(int a[N], int num);    // 把数num中的各个位放入数组中, 返回数组长度
    int GetMinPosition(int a[N], int len, int pos);// 从a[pos]到a[len]中寻找最小数, 返回下标
    
    int a[N];            
    int pos;    // 存放GetMinPosition返回值
    int result = 0;    // 存放结果
    int len = 0;    // 数组长度

    if (num <= 0 || k < 0)
    {
        return -1;
    }

    else
    {
        len = GetEveryDigit(a, num);
        
        pos = len;

        if (len <= k)    // 当要删除位数大于数组长度时, 返回0
        {
            return 0;
        }
        if (k == 0)        // 不删除任何位
        {
            return num;
        }

        k = len - k;    // k表示要选多少位出来,总的个数减去要删除的个数
        
        while (k > 0)        //
        {
            result *= 10;        // 选数是从高位到低位, 所以每增加一个位, 数要*10

            pos = GetMinPosition(a, pos, k);    //

            result += a[pos];    // 增加一位
            k -- ;
        }
        return result;
    }
}

int GetEveryDigit(int a[N], int num)
{         // 把数num中的各个位放入数组中, 返回数组长度
    int n = 0;
    while (num != 0)
    {
        a[n++] = num % 10;
        num /= 10;
    }
    return n;
}// end

int GetMinPosition(int a[N], int len, int pos)
{        // 从a[pos]到a[len]中寻找最小数, 返回下标
    int i;
    int result = len-1;
    for (i=len-1; i>=pos-1; i--)
    {
        if (a[result] > a[i])    
        {
            result = i;
        }
    }
    return result;
}// end
2008-06-03 17:52
chmlqw
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2007-10-11
收藏
得分:0 
大家给点建议吧...
2008-06-03 17:53
Loli
Rank: 1
来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
收藏
得分:0 
效率不佳


" border="0" />[color=white]
2008-06-03 18:04
Loli
Rank: 1
来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
收藏
得分:0 
没有人做了??



" border="0" />[color=white]
2008-06-04 14:27
wy0110
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-6-5
收藏
得分:0 
回复 1# 界水乘风 的帖子
不会,标准C没有这个?
2008-06-05 08:33
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
收藏
得分:0 
[bo][un]Loli[/un] 在 2008-6-4 14:27 的发言:[/bo]

没有人做了??



http://yzfy.

O(k*(n-k)) 内完成够不

[[it] 本帖最后由 yxwsbobo 于 2008-6-5 10:15 编辑 [/it]]

How are you 怎么是你?
How old are you   怎么老是你?
2008-06-05 10:05
Loli
Rank: 1
来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
收藏
得分:0 
1<=k<=n<=1e7
假如。。。n最大,k为n的一半,如何??



" border="0" />[color=white]
2008-06-05 10:14
界水乘风
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-05 10:15
快速回复:再发一个上机c程序
数据加载中...
 
   



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

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