| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1659 人关注过本帖
标题:新——半数集问题(来尝试一把吧!)
取消只看楼主 加入收藏
gyx8899
Rank: 2
等 级:论坛游民
帖 子:56
专家分:91
注 册:2010-2-2
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
新——半数集问题(来尝试一把吧!)
//半数集问题(给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:)
//1、n包含于set(n);
//2、在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
//3、按此规则进行处理,直到不能添加自然数为止。例如,set(6)={6,16,26,126,36,136}.半数集set(6)中有6个元素。
#include<iostream>
using namespace std;
int mul(int n)//10倍数
{
    int pow=1;
    for(int i=0;n!=0;i++)
        n/=10;
    for(int j=0;j<i;j++)
        pow*=10;
    return pow;
}
int set(int n,int &count)
{
    int m;
    for(int i=1;i<=n/2;i++)
    {
        m=i*mul(n)+n;
        cout<<" "<<m;
        count++;
        if((m-n)/mul(n)>=2)
            count=set(i,count);
        //cout<<" "<<m;
    }
    return count;
}
void main()
{
    int count=1,n;
    cout<<"Enter your number n:"<<endl;
    cin>>n;
    cout<<n;
    count=set(n,count);
    cout<<endl<<count<<endl;
}
其中set(6)={6,16,26,126,36,136}.输出有错误,我实在想不出来,寻求高手相助!另编写一个set()函数也行!先谢谢了!
搜索更多相关主题的帖子: 尝试 
2010-02-06 23:11
gyx8899
Rank: 2
等 级:论坛游民
帖 子:56
专家分:91
注 册:2010-2-2
收藏
得分:0 
回复 2楼 pangding
能大于9!
2010-02-07 10:30
gyx8899
Rank: 2
等 级:论坛游民
帖 子:56
专家分:91
注 册:2010-2-2
收藏
得分:0 
回复 4楼 pangding
是大于9的自然数啊!难道题目不是指的是这吗?
2010-02-07 18:05
gyx8899
Rank: 2
等 级:论坛游民
帖 子:56
专家分:91
注 册:2010-2-2
收藏
得分:0 
回复 6楼 pangding
应该是:{13,113,213,313,413,513,613,1213,1313,1413,1513,1613,2413,2513,2613,3613,12413,12513,12613,13613}
这是我自己理解的题意。题目就是上面的文字,并未修改。
2010-02-07 22:04
gyx8899
Rank: 2
等 级:论坛游民
帖 子:56
专家分:91
注 册:2010-2-2
收藏
得分:0 
回复 6楼 pangding
上面的程序是我自己编写的,有点问题,半数集个数对,就是元素输出不正确。求助!
2010-02-07 22:10
gyx8899
Rank: 2
等 级:论坛游民
帖 子:56
专家分:91
注 册:2010-2-2
收藏
得分:0 
回复 9楼 _DaNciNg_
//半数集问题(给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:)
//1、n包含于set(n);
//2、在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
//3、按此规则进行处理,直到不能添加自然数为止。例如,set(6)={6,16,26,126,36,136}.半数集set(6)中有6个元素。
//《下面是我自己编写的程序》
#include<iostream>
using namespace std;
int mul(int n)//自然数n的位数i,pow为10的i次方。
{
    int pow=1;
    for(int i=0;n!=0;i++)
        n/=10;
    for(int j=0;j<i;j++)
        pow*=10;
    return pow;
}
int set(int n,int &count)
{
    int m=0;
    for(int i=1;i<=n/2;i++)
    {
        m+=i*mul(n)+n;//用i乘以自然数n的位数的10次方,例如:位数为2,则乘以100;位数为3,则乘以1000;再加上n,就是半数集的元素。
        cout<<" "<<m;
        count++;
        if((m-n)/mul(n)>=2)
            count=set(i,count);
        //cout<<" "<<m;
    }
    return count;
}
void main()
{
    int count=1,n;//count是计数,n是给定的自然数。
    cout<<"Enter your number n:"<<endl;
    cin>>n;
    cout<<n;
    count=set(n,count);
    cout<<endl<<count<<endl;
}
//本程序有错误。我自己找不出来,望高手完善。谢谢!
2010-02-08 14:25
快速回复:新——半数集问题(来尝试一把吧!)
数据加载中...
 
   



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

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