一人有四張3分的郵票和三張5分的郵票,用這些郵票中的一張或若干張可以得到多少種不同的郵資?
*問題分析與算法設計
將問題進行數學分析,不同張數和面值的郵票組成的郵資可用下列公式計算:
S=3*i+5*j
其中i為3分郵柰的張數,j為5分的張數
按題目的要求,3分的郵票可以取0、1、2、3、4張,5分的郵票可以取0、1、2、3張。采用窮舉方法進行組合,可以求出這些不同面值不同張數的郵標組合後的郵資。
*程序說明與注釋
#include<stdio.h>
int a[27];
int main()
{
int i,j,k,s,n=0;
for(i=0;i<=4;i++) /*i:取三分郵票的張數*/
for(j=0;j<=3;j++) /*j:取5分郵票的張數*/
{
s=i*3+j*5; /*計算組成的郵票面值*/
for(k=0;a[k];k++) /*查找是否有相同的郵資*/
if(s==a[k])break;
if(!a[k]&&s) /*沒有找到相同的郵資則滿足要求存入數組*/
{
a[k]=s; n++;
}
}
printf("%d kinds:",n); /*輸出結果*/
for(k=0;a[k];k++)
printf("%d ",a[k]);
printf("\n");
}
*運行結果
19 kinds: 5 10 15 3 8 13 18 6 11 16 21 9 14 19 24 12 17 22 27
*