當前位置:首頁 » 編程語言 » c語言郵票問題四種不同值的郵票
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言郵票問題四種不同值的郵票

發布時間: 2022-05-23 12:16:19

『壹』 c語言郵票組合問題,如圖,那個例子在寫的程序沒法得出正確答案,如何修改

#include <stdio.h>
int main()
{
int a[4],n;
int i,count,temp;
for(i=0;i<4;i++)
scanf("%d",&a[i]);

n=6;//第一個數規定是1,所以1-5肯定存在,所以n從6開始
while(1)
{
temp=n;//臨時變數存儲,防止改變temp時影響到n
count=0;//計數有幾張郵票
i=3;//數組長度4,從下標3開始,也是最大的值開始

while(temp>0)
{
while(a[i]>temp)//使a[i]變成小於或等於temp的值,這樣才可以拆成小郵票
i--;
count+=temp/a[i];//加上幾張a[i]面值的郵票
temp%=a[i];//除去上面使用的郵票剩下的面值
}
if(count>5)//如果使用的郵票超過5張,則錯誤,即這時的n不符合
break;
n++;
}
printf("[1,%d]\n",n-1);// 不符合的前一個是符合的
return 0;
}

『貳』 c語言】某人有五張兩角的郵票和四張三角的郵票,用這些郵票中的一張或若干張可以得到多少種不同的郵資

下面是我改正後的演算法。你看下答案對不對。。。

#include<stdio.h>
voidmain()
{
intn,f3,f2,s=0,t;
for(n=3;n<=22;n++)
{
for(f2=0;f2<=5;f2++)

for(f3=0;f3<=4;f3++)
{

if(n==3*f3+2*f2&&n!=t)
{
t=n;
s++;
}
}


}
printf("s=%d ",s);}

我是這么想的:這里是說郵資的不同,也就是不管你如何組合,只要它的面值相等,就算一種。比如三張2角面值為6,兩張3角面值也為6,這只算是一種郵資。把重復的去掉就好了。

『叄』 設計一套郵票,設計要求如下:該套郵票由四種不同面值的郵票組成,面值數為正整數,並且對於連續整數1,2

從四種不同面值的郵票中選取面值互不相同且不超過三張的不同取法共有4+6+4=14(種).
不同取法所獲得郵票的總面值可能相同,也可能不同,至多隻有14種不同的總面值,
∴R≤14(5分)
又∵若設計四種郵票的面值數分別為1,2,4,8.(5分)
∵1=1,2=2,3=1+2,4=4,5=1+4,6=2+4,7=1+2+4,
8=8,9=1+8,10=2+8,11=1+2+8,12=4+8,13=1+4+8,14=2+4+8,
∴R≤14
從而R最大為14,上述四種面值數作為一套,即是符合題意的設計.(5分)
故答案為:14.

『肆』 C語言--郵票組合問題

#include <stdio.h>

int main()
{
int i,j,count=0;
int result[100];
int temp;
for(i=0;i<=4;i++)
{
for(j=0;j<=3;j++)
{
result[count]=i*3+j*5;
count++;
}
}
printf("種數:%d\n",count);
for(i=0;i<count;i++)
{
for(j=i;j<count;j++)
{
if(result[i]>result[j])
{
temp=result[i];
result[i]=result[j];
result[j]=temp;
}
}
}
printf("郵資種類:");
for(i=0;i<count;i++)
{
printf("%d ",result[i]);
}
printf("\n");
}
結果:
種數:20
郵資種類:0 3 5 6 8 9 10 11 12 13 14 15 16 17 18 19 21 22 24 27

如果不算0的話就是19種

『伍』 設計一套郵票,設計要求如下:該套郵票由四種面值的郵票組成,面值數為正整數,並且對於連續整數1,2,3,..

這套郵票面值必有1,還要有2(因為面值不同),這樣由1、2可以得到3,那麼必須還有4,這樣可以得到5(1+4),6(2+4),7(1+2+4).還要有8,這樣可以得到:9(1+8),10(2+8),11(1+2+8),12(4+8),13(1+4+8),14(2+4+8) ,n最大是14。 郵票的面值是1、2、4、8

『陸』 學Pascal的進~

問題分析:知道每封信郵票數的范圍(<=3),郵票有四種類型,編程找出能使面值最大郵票。其演算法是:
(1) 面值不同的四種郵票,每封信所貼郵票不超過3張;
(2) 用這四種郵票貼出連續的整數,並且使r值最大;
(3) 用窮舉法,找出所有符合條件的解;
(4) 本題用集合的方法統計郵票的面值,提高判重的速度。
設四種郵票的面值分別為:a,b,c,d,根據題意設:
a<b<c<d,因此a=1,用循環語句完成搜索。
Program reborn;
Var a,b,c,d:integer;
X,x0,x1,x2,x3,x4:integer;
st1:set of 1..100;
function number(a,b,c,d:integer):integer;
var n1,n2,n3,n4,sum:integer;
begin
st1:=[];
for n1:=0 to 3 do
for n2:=0 to 3-n1 do
for n3:=0 to 3-n1-n2 do
for n4:=0 to 3-n1-n2-n3 do
begin
if n1+n2+n3+n4<=3 then
begin
sum:=n1*a+n2*b+n3*c+n4*d;
st1:=st1+[sum];
end;
end;
sum:=1;
while sum in st1 do
sum:=sum+1;
number:=sum-1;
end;
begin
a:=1;x0:=0;
for b:=a+1 to 3*a+1 do
for c:=b+1 to 3*b+1 do
for d:=c+1 to 3*c+1 do
begin
x:=number(a,b,c,d);
if x>x0 then
begin
x0:=x;x1:=a;x2:=b;x3:=c;x4:=d;
write(x1:5,x2:5,x3:5,x4:5);
writeln(『』:10,』x0=』,x0);
end;
end;
end.

『柒』 C語言,求郵票組合演算法或思路

定義一個五元素一維數組,a[0]=0,輸入其餘四個值,分別是郵票面值。五張郵票所能組成的郵資等於五個變數之和,每一個變數都能在前面定義的一維數組里相互獨立地取值,這樣通過一個五維的循環就能討論所有的情況。為了減少重復討論,可以要求用戶按大小順序輸入郵票面值,程序相應改動,這里不好說清。
給你一個絕對能用的程序。樓下的不要學我。
#include<stdio.h>
#include<stdlib.h>
int a[5]={0};
int b[126];
int search(int num)
{
int i,j=0;
for(i=1;i<126;i++)
{
if(b[i]==num)
j++;
}
return (j);
}
void main()
{
for(;!(a[1]<a[2]&&a[2]<a[3]&&a[3]<a[4]);)
{
printf("請按從小到大的順序輸入四種郵票面值:\n");
for(int i=1;i<5;i++)
{
scanf("%d",&a[i]);
}
}
printf("\n");
int i,j,k,m,n;
int t=0;
for(i=0;i<=4;i++)
{
for(j=0;j<=i;j++)
{
for(k=0;k<=j;k++)
{
for(m=0;m<=k;m++)
{
for(n=0;n<=m;n++)
{
b[t]=a[i]+a[j]+a[k]+a[m]+a[n];
t++;
}
}
}
}
}
k=m=n=0;
for(i=a[1];i<=a[4]*5;i++)
{
if(t=search(i))
{
printf("可以組成郵資%d,有%d種方法\n",i,t);
m++;
}
else
{
if(m>k)
{
k=m;
n=i;
}
m=0;
}
}
if(m==a[4]*5-a[1]+1)
printf("\n可組成郵資的一個最大連續區間為[%d,%d]\n",a[1],a[4]*5);
else
printf("\n可組成郵資的一個最大連續區間為[%d,%d]\n",n-k,n-1);
system ("pause");
}