| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5334 人关注过本帖
标题:【此帖作废】[非c高手进]帮忙编程解决这两道小学奥数题
取消只看楼主 加入收藏
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 
尽管广陵绝唱是俺的大恩人,但还是要修正一些错误!(不好意思啦)
我改正后及简化后的程序如下,声明:我也只是个beginner,还请各位路过的高手不要见笑,多多指教!
程序代码:
#include"stdio.h"
int jiance(float *p,int k)
{
        int i;
        int fanhui=1;
        for(i=0;i<k-1;i++) if(p[i]==p[k-1]) fanhui=0;
        return fanhui;
}
int main(void)
{
    float jiao[8]={0.0f,0.1f,0.2f,0.3f,0.5f,0.6f,0.7f,0.8f}; /* 角钱可能出现的币值 */
        float yuan_1=1.0,yuan_5=5.0;  /* 元钱 */
        float zong[200];/* 总额,用于检测是否有相同数值出现 */
        int i,j,k,count=0;
        for(i=0;i<8;i++)
                for(j=0;j<5;j++)
                        for(k=0;k<3;k++)
                        {
                                zong[count]=jiao[i]+yuan_1*j+yuan_5*k;
                                if((jiance(zong,count))&&zong[count]!=0.0)
                                {printf("总额%.2f=一元%d张+五元%d张+角%.2f元\t",
                                zong[count],j,k,jiao[i]);count++;}
                        }
        printf("\n\n共有%d种付币方法\n",count);
        getchar();
}


[[it] 本帖最后由 fish7fish7 于 2008-8-3 20:53 编辑 [/it]]
2008-08-03 19:15
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 
非常感谢fulanlinghun,好人啊,难找啊^.^
你给了我一个新的思路,写了如下代码,好累啊,本希望能更普遍更强大,可是编译出错,运行出错;希望路过的高手帮忙,小抬贵手,帮忙改错,晚辈感激不尽
……
程序代码:
#include"stdio.h"
int *panduan(int a,int n)                   /*此函数用于判断a的因数*/
{
    int i,j=0,s[9999][9999],t=0;
    for(i=1;i<=a;i++)
        if(a%i==0) 
        {s[i-1][j]=i;
        j++;
        t++;
        if(t==n-1) s[i-1][j]=a/i;
        else panduan(a/i,n);
        }
    return s;                                /*返回各种情况的数组的起始地址*/
}


int *he(int (*p)[9999],int *t)                    /*此函数用于求a的因数的和*/
{
    int i,j,k=0,sum[9999]={0},*q=sum;
    for(i=0;i<9999;i++)
    {for(j=0;j<9999;j++)
            if(p[i][j]==0) break;
            else sum[i]+=p[i][j];
     if(sum[i]==0) break;
    }
    *t=i-1;
    return q;                                    /*返回和数组的起始地址*/
}


int fmin(int *p,int t,int *sum)                        /*此函数用于找到和的最小值*/
{
    int i,j=0,min;
    min=p[0];
    for(i=1;i<=t;i++)
        if(min>p[i]) {min=p[i];j=i;} 
    *sum=min;
    return j;                                        /*返回和最小的数组的下标*/
}


void main()
{
    int a,n,min,minp,(*p)[9999],*sum,t=0,i;
    printf("请输入被拆分的数:");
    scanf("%d",&a);
    printf("请输入想要拆成多少个数:");
    scanf("%d",&n);
    p=panduan(a,n);
    sum=he(p,&t);
    minp=fmin(sum,t,&min);
    printf("拆分的数如下:\n");
    for(i=0;i!=0;i++)
        printf("%d\t",p[minp][i]);
    puts("");
    printf("其和为%d\n",min);
}


[[it] 本帖最后由 fish7fish7 于 2008-8-4 13:48 编辑 [/it]]
2008-08-04 13:46
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 
我怀疑26#的斑竹是不是来我这灌水来了,我学习态度端正与否,我自己心里有数,不必别人替我定义,谢谢,我想这样总比那些没事灌水的斑竹好些吧,行了,我不想多说,群众的眼睛是血亮的,好自为之,……
楼上的程序有很多错误,还有希望楼上以后写程序能加一些注释,否则很难看……
(以上若有言辞过激的地方还请见谅,谢谢……)

[[it] 本帖最后由 fish7fish7 于 2008-8-4 14:59 编辑 [/it]]
2008-08-04 14:55
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 
由于本人智商有限,很不理解楼上两位的算法,求详细解释!
本人说过这尽管是小学奥数题,但是要编程实现求解的,如果单是解这道题,本人小学奥数还是会的, (有点不谦虚,呵呵),但是我不懂楼上两位的算法,我只会这么算,8*14+7=119,(哎,小学智商,没办法 )真心希望麻烦楼上两位高人给个详解,谢谢……
2008-08-05 12:43
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 
这个算法是我小时候学奥数时老师教的,汗 ,我就会这么一个,不好意思啦!
解释:角币共有7种:0.1、0.2、0.3、0.5、0.6、0.7、0.8。
元数可为1-14元,共14种。
1.0,1.1,1.2,1.3,1.5,1.6,1.7,1.8,从每个整元数开始有8个币值,14个整元数就共有14个8.
所以付出不同的各种数额的币值为14×8+7=119种
能明白吗?

好了,晚辈才疏学浅,但是知无不言,由于智力有限,还请simpley大大和卧龙斑竹或路过的懂得他们的算法的朋友详细讲讲他们的算法,晚辈不胜感激……
2008-08-05 16:31
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 
哎,终于明白了,不就是概率吗?
修正楼上的错误,详解如下:
从1角币里面有两种选法,选一个或不选.
从2角币里面有两种选法,选一个或不选.
从5角币里面有两种选法,选一个或不选.
从1元币4张里面有5种选法,0,1,2,3,4.
从5元币2张里面有3种选法,0,1,2.
去掉1个都不选的情况:
答案如下:2*2*2*5*3-1=2^3*5*3-1(哎,求人好难啊,这个结果好神秘啊)
不过还是不懂卧龙斑竹的意思,求卧龙斑竹详解,谢谢,晚辈将感激不尽……
[bo][un]卧龙孔明[/un] 在 2008-8-5 12:08 的发言:[/bo]



第一题的标准计算解法(输出所有的解)就是构造类似一种数的东西,和您的算法思想一样
每一个物品作为一个bit,因为不会冲突,因此每一个物品对应一个权,然后枚举1-2^3*5*3的所有的数,最后输出结果。应该是最快 ...
2008-08-05 20:23
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 
晕!还是不理解卧龙斑竹的高见,什么bit(我只知道是位的意思),什么物品,什么O(N),这些专有名词晚辈都不理解,还请卧龙斑竹就把俺当成是个只有小学智商的学生( 嘿嘿,实际也确实如此),详细解释一下您的算法,再次拜谢……( 哎!人笨,就是没办法,还请斑竹见谅……
2008-08-05 23:23
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 
[bo][un]爱喝牛奶的猫咪[/un] 在 2008-8-6 00:10 的发言:[/bo]

孔明,别和他浪费时间了


 

我招谁惹谁了我!( 求人真的好难,这就是中国的社会吗?……)
哎,再次声明,此帖只是非C高手进,象飞燕的马甲这种高手还是免进了吧,这种高手既然不屑于我的问题,进来还不是浪费时间,有那时间还不如帮更需要帮助的人指点几着……(此乃本人一点点小建议,本人无权无势,没有人身攻击的意思……)
[bo][un]广陵绝唱[/un] 在 2008-8-6 01:27 的发言:[/bo]

请问谁的时间那么值钱?这种不屑一顾的态度很让人看不起,不管你是谁。

    当汶川大地震的时候,如果温总理也是这态度,说“别和他们浪费时间了,快点推平了重建”,那事就闹大了。

    所谓诲人不倦,当帮助 ...

严重赞同广陵绝唱大恩人的观点,说的好棒啊 ,感动中……
感谢卧龙斑竹这种自认为非C高手的高手光临此帖( 汗,虽然说的我看不懂),由于斑竹很忙(本人能谅解),希望各位(不忙的&&能看懂卧龙斑竹的高见的&&非C高手)帮晚辈详细解释卧龙斑竹的高见,晚辈在此不胜感激……
2008-08-06 11:50
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 

悲哉世也,岂独一人哉?莫不然矣!
2008-08-06 20:15
fish7fish7
Rank: 1
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-7-31
收藏
得分:0 
行了,我知错了,所有责任都包在我身上,千错万错都是我的错,(谁怪我这小子智商低呢? )斑竹和飞燕等人的强大势力额是领教了,小人给你们这些“大学生”赔不是了还不成吗?
行了,此帖作废还不成吗?跪求斑竹和飞燕等人早早安歇吧……
2008-08-06 21:03
快速回复:【此帖作废】[非c高手进]帮忙编程解决这两道小学奥数题
数据加载中...
 
   



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

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