| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 713 人关注过本帖
标题:做了半天,很纠结的~~~
只看楼主 加入收藏
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
此题很无聊和之前的 100 换 1 2 5 没有本质区别
2011-04-23 18:57
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:1 
我觉得这个题还是很有考虑的空间,和100 换 1 2 5 是没有相同之处的,原因是他可以找钱,这就麻烦太多了。
2011-04-23 19:26
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
。。。你再想想,一点不麻烦,只不过多了几种情况而已
尤其这个还是求货币枚数最少的情况,就更简单了

[ 本帖最后由 voidx 于 2011-4-23 20:01 编辑 ]
2011-04-23 19:58
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:5 

// 如下程序 可以计算 不找钱时 应缴的 最少张数:注意到 1, 7, 7^2, 7^3,后者是前者的倍数,所以只需要尽量取大票就可以了。
#include <stdio.h>
void main()            
{
        int  i,j,k,m,s;

        i=10015/343;
        j=10015%343/49;
        k=10015%49/7;
        m=10015%7;
        s=i+j+k+m;
        printf("7^3  7^2  7  1\n");   
        printf("%5d%5d%5d%4d\n",i,j,k,m);    //  29 1 2 5

        printf(" %d\n",s);    //这是不找钱的情况下最少的张数。  s=37

}
//但是很显然   29 1 2 5  -->  29  1 3(多交一张7元的)  -2(找两元)   -- s= 29+1+3+|-2|=35 要更少。
//所以问题不是那么简单,等待达人给出算法

[ 本帖最后由 kwxx 于 2011-4-23 20:18 编辑 ]
2011-04-23 20:09
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:0 
回复 14楼 kwxx
#include <stdio.h>
void main()            
{
        int  i,j,k,m,s,c;

        i=10015/343;
        j=10015%343/49;
        k=10015%49/7;
        m=10015%7;
        c=7-m;
        if(m>4)  
        {
            k++;
            m=0;
        }
        s=i+j+k+m+c;
        printf("7^3  7^2  7  1  :");         
        printf("%5d%5d%5d%4d\n",i,j,k,m,c);   
        printf("最少的张数: %d\n",s);   

}
2011-04-23 22:28
雪夜祭奠
Rank: 2
等 级:论坛游民
帖 子:9
专家分:26
注 册:2011-4-23
收藏
得分:11 
回复 15楼 huwengui
我觉得每次相除之后都应该比较一次
#include <stdio.h>
main()
 {int i,j,k,l,m,s;
 i=0;j=0;k=0;l=0;m=10015;
 i=m/343;
 m=m%343;
 if(m>(343/2)){++i;m=343-m;}
 j=m/49;
 m=m%49;
 if(m>(49/2)){++j;m=49-m;}
 k=m/7;
 m=m%7;
 if(m>7/2){++k;m=7-m;}
 l=m;
 s=i+j+k+l;
 printf("7^3  7^2  7  1:\n");
 printf("%5d%5d%5d%5d\n",i,j,k,l);
 printf("least=%d",s);
 getch();
  }
2011-04-24 00:11
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:0 
回复 16楼 雪夜祭奠
你的方法貌似可以的
2011-04-24 09:53
快速回复:做了半天,很纠结的~~~
数据加载中...
 
   



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

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