标题:某人有m张8角和n张5角的邮票,使用这些邮票能组合出多少种不同面值的邮资,m ...
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用寒风中的细雨在2017-3-24 14:43:27的发言:

测试数据 20 20

~ # awk '{print $3}' txt | sort | wc -l
427
~ # awk '{print $3}' txt | sort | uniq | wc -l
232

重复

哪个面值合计数重复了?
2017-03-24 15:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
试试这个~用数组版验证了数据的准确性~

程序代码:
#include <stdio.h>
#include<string.h>
int main()     
{     
    int i=0;
    int j=0;
    int m=0;
    int n=0;
    int count=0;  
    
    int a[10001]={0};
    memset(a,0,sizeof (a));

    scanf("%d%d",&m,&n);  
   
    for (i=0; i<=m; i++)  
        for (j=0; j<=n; j++)  
           if (i<5||j>n-8)
            {
                    printf("%4d",8*i+5*j);
                    count++; 
            }
                
    printf("\n\n%d\n",count);  
    
     for (i=0,count=0; i<=m; i++)  
        for (j=0; j<=n; j++)  
           if (!a[8*i+5*j])
               {
                   a[8*i+5*j]=1;
                   count++;
               }
               
     printf("\n\n%d\n",count);
     
    return 0;
}


感觉用数组时间空间允许的话基本无敌~不过这样算法就没多少含金量了~

[此贴子已经被作者于2017-3-24 16:38编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-24 15:53
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
感觉公式可以一步到位~

通过上楼用数组证明可以验证数据是否正确~

程序代码:
#include <stdio.h>
int main()     
{     

    int m=0;
    int n=0;
    int k=0;

    scanf("%d%d",&m,&n);

     if (m>4&&n>7)
         k=(m-4)*(n-7);
     
     printf("%d\n",(m+1)*(n+1)-k);
     
    return 0;
}
收到的鲜花
  • lzd7440882017-03-31 23:38 送鲜花  3朵   附言:我很赞同

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-24 16:50
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
回复 11楼 吹水佬
100角
100角
100角
101角
101角
101角
102角
102角
103角
103角
103角
,,,

[此贴子已经被作者于2017-3-24 21:10编辑过]

2017-03-24 18:55
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1728
专家分:3216
注 册:2015-12-2
得分:4 
#include <stdio.h>
main()
{
    int m,n,a[10000]={0},b[10000]={0},count=0,temp;
    scanf("%d%d",&m,&n);
    for(int i=0;i<=m;i++)
        for(int j=0;j<=n;j++)
        {
            if(a[i*8+j*5]==1)continue;
                a[i*8+j*5]=1;
                b[count++]=i*8+j*5;
                //printf("%d*8+%d*5=%d角\n",i,j,i*8+j*5);
            
        }
   
    for(int i=0;b[i+1]!=0;i++)
        for(int j=i+1;b[j]!=0;j++)
        {
            if(b[i]>b[j])
            {
                temp=b[i];
                b[i]=b[j];
                b[j]=temp;
            }
            }
    for(int i=0;b[i+1]!=0;i++)    printf("%d角\n",b[i]);   
}
2017-03-24 20:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 14楼 寒风中的细雨
确是,重复的不少,算法不对的。
2017-03-24 20:19
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:4 
回复 13楼 九转星河
好像就是这个公式哦!
2017-03-24 20:57
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
如果m,n在一定范围,可以简单对号入座统计。
#include <stdio.h>
#include <stdlib.h>
main()     
{     
    int i, j, k, m, n, count=0;
    printf("分别输入8角和5角的张数:");
    scanf("%d%d",&m,&n);
    k = 8*m+5*n+1;
    char *c = (char*)calloc(k, sizeof(char));
    for (i=0; i<=m; i++)  
        for(j=0; j<=n; j++)  
            c[i*8+j*5] = 1;
            //c[i*8+j*5]++;
    for (i=0; i<k; i++)
        if (c[i])
            count++;
    printf("共有%d种组合\n",count-1);  //c[0]的不算。
    free(c);
}
2017-03-24 20:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 13楼 九转星河
m=1,n=1结果是4,好象多了一个。
2017-03-24 21:02
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
回复 19楼 吹水佬
吹版主总结下嘛,肯定有个不需要循环的简明规律。
2017-03-24 21:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475438-1-1.html




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

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