小言_互联网的博客

问题 1154: 【C语言训练】邮票组合问题*【数组去除相同元素】

513人阅读  评论(0)

时间限制: 1Sec 内存限制: 128MB

题目描述

某人有四张3分的邮票和三张5分的邮票,用这些邮票中的一张或若干张可以得到多少种不同的邮资?

输入

输出
可得到多少种

样例输入

样例输出
19

Code & Analysis

3分:4张
5分:3张
首先将所有的邮票放入数组,然后将数组中所有的相同元素去除仅剩一个。
此时数组中存放的个数就是邮票组合的组数。

#include<stdio.h>
int main()
{
    //3*4   5*3     27
    int i,j,k,t,a[28]={0},c1=5,c2=3;
    //将邮票的所有组合全部放入数组
    for(i=0,k=0;i<=c1;i++){
        for(j=0;j<=c2;j++){
            a[k]=i*3+j*5;
            k++;
        }
    }
    //保证数组中的元素都仅有一个
    for(i=0;i<k;i++){
        for(j=0;j<k-i-1;j++){
            if(a[j]>a[j+1]){
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
                j--;
            }
            if(a[j]==a[j+1]){
                a[j+1]=a[k-1];
                j--;
                k--;
            }
        }
    }
    printf("%d", k-1);
    return 0;
}

转载:https://blog.csdn.net/qq_43328585/article/details/104478061
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场