我的算法:
先選50的,再選20的,最后選10元的。
從0開始增加50的數(shù)量,余數(shù)按20的從0開始增加,再余數(shù)就計(jì)算出10元的個數(shù)(每種方式10元的數(shù)量一定是唯一計(jì)出的值。
退出內(nèi)循環(huán)的條件:50的值的和+20的面值的和>100。
退出外循環(huán)的條件:50的面值的和>100。
兩層循環(huán)即可算出。
我還沒寫代碼測試,感興趣的朋友試試,有啥問題告訴我,明天找時間試試。
補(bǔ)充:
代碼如下:
#include<stdio.h>
intmain(void)
{
intn50=0;
intn20=0;
intn10=0;
intn_max=100;
intyu=100;
inti=0;
intj=0;
intindex=0;
for(i=0;i*50<=n_max;i++)
{
if(i*50<=n_max)
{
yu=n_max-i*50;
for(j=0;j*20<=yu;j++)
{
n10=(yu-j*20)/10;
index++;
printf("No%d.\t%d=%d*50+%d*20+%d*10\n",index,n_max,i,j,n10);
}
}
}
return0;
}
這個編輯器破壞了代碼的格式,不要在意。