尽管广陵绝唱是俺的大恩人,但还是要修正一些错误!(不好意思啦)
我改正后及简化后的程序如下,声明:我也只是个beginner,还请各位路过的高手不要见笑,多多指教!
程序代码:#include"stdio.h"
int jiance(float *p,int k)
{
int i;
int fanhui=1;
for(i=0;i<k-1;i++) if(p[i]==p[k-1]) fanhui=0;
return fanhui;
}
int main(void)
{
float jiao[8]={0.0f,0.1f,0.2f,0.3f,0.5f,0.6f,0.7f,0.8f}; /* 角钱可能出现的币值 */
float yuan_1=1.0,yuan_5=5.0; /* 元钱 */
float zong[200];/* 总额,用于检测是否有相同数值出现 */
int i,j,k,count=0;
for(i=0;i<8;i++)
for(j=0;j<5;j++)
for(k=0;k<3;k++)
{
zong[count]=jiao[i]+yuan_1*j+yuan_5*k;
if((jiance(zong,count))&&zong[count]!=0.0)
{printf("总额%.2f=一元%d张+五元%d张+角%.2f元\t",
zong[count],j,k,jiao[i]);count++;}
}
printf("\n\n共有%d种付币方法\n",count);
getchar();
}[[it] 本帖最后由 fish7fish7 于 2008-8-3 20:53 编辑 [/it]]







(有点不谦虚,呵呵),但是我不懂楼上两位的算法,我只会这么算,8*14+7=119,(哎,小学智商,没办法
)真心希望麻烦楼上两位高人给个详解,谢谢……
,我就会这么一个,不好意思啦!
晕!还是不理解卧龙斑竹的高见,什么bit(我只知道是位的意思),什么物品,什么O(N),这些专有名词晚辈都不理解,还请卧龙斑竹就把俺当成是个只有小学智商的学生(
嘿嘿,实际也确实如此),详细解释一下您的算法,再次拜谢……(
)
,感动中……
汗,虽然说的我看不懂),由于斑竹很忙(本人能谅解),希望各位(不忙的&&能看懂卧龙斑竹的高见的&&非C高手)帮晚辈详细解释卧龙斑竹的高见,晚辈在此不胜感激……