設做包子成本為c,販售包子價格為p,每天能賣出m個包子,工讀生時薪為s,工作時數為h,若h>5,加發獎金bonus=10*h,毛利g=(p-c)m-sh,收益profit=g-bonus,找出profit最大的最佳銷售策略。
第一行輸入n,代表有n組測試資料,第二行開始有n組輸入,每一組輸入依序為c,k,s,接著連續輸入k對定價(p)及銷售量(m)。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int n,i,j;
int c[10],k[10],s[10],h[10],p[10],m[10];
int bonus,g[10],profit[10];
int max=profit[0];
printf("n: ");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("c[%d] k[%d] s[%d] h[%d]: ",i,i,i,i);
scanf("%d %d %d %d",&c[i],&k[i],&s[i],&h[i]);
for(int j=0;j<k[i];j++)
{
printf("p[%d] m[%d]: ",j,j);
scanf("%d %d",&p[j],&m[j]);
}
}
for(int i=0;i<n;i++)
{
if(h[i]>5)
{
for(int j=0;j<k[i];j++)
{
g[j]=(p[j]-c[i])*m[j]-(s[i]h[i]);
bonus=10h[i];
profit[j]=g[j]-bonus;
}
}
else
profit[j]=g[j];
}
for(int j=0;j<k[i];j++)
{
if(profit[j]>max)
max=profit[j];
printf("%d %d %d\n",p[j],m[j],max);
}
system("pause");
return 0;
}
原題目
第一行輸入n,代表有n組測試資料,第二行開始有n組輸入,每一組輸入依序為c,k,s,接著連續輸入k對定價(p)及銷售量(m)。
應該改為
第一行輸入n,代表有n組測試資料,第二行開始有n組輸入,每一組輸入依序為c,k,s,h,接著連續輸入k對定價(p)及銷售量(m)。
今天是假日
如果明天還沒人回覆的話
我再來寫程式
如果你急的話
可以參考這篇
有兩點小小的不同:
1.題目比你的簡單
2.語法是 C++
程式如下