不是太明白什么意思.
就把他理解成是去商店用100元买100元以内的东西(假设不会出现几毛钱时).售货员可以用多少种找我钱的方法
#include "stdio.h"
void main()
{
 int a,b,y1,y2,y3,y4,y5,y6,k=0;
 printf("请输入物品价格(0-100):");
    scanf("%d",&b);
    a=100-b;
    if (a>=50)
         for(y1=0;y1<=(a/50);y1++)
            for(y2=0;y2<=(a/20);y2++)
               for(y3=0;y3<=(a/10);y3++)
                  for(y4=0;y4<=(a/5);y4++)
                     for(y5=0;y5<=(a/2);y5++)
                        for(y6=0;y6<=a;y6++)
                            if(y1*50+y2*20+y3*10+y4*5+y5*2+y6==a)
                               {
                                 k++;
                                 printf("%d-->50  %d-->20  %d-->10  %d-->5  %d-->2  %d-->1\n",y1,y2,y3,y4,y5,y6);
                               }
    if (50>a && a >=20)
         for(y2=0;y2<=(a/20);y2++)
               for(y3=0;y3<=(a/10);y3++)
                  for(y4=0;y4<=(a/5);y4++)
                     for(y5=0;y5<=(a/2);y5++)
                        for(y6=0;y6<=a;y6++)
                            if(y2*20+y3*10+y4*5+y5*2+y6==a)
                               {
                                 k++;
                                 printf("%d-->20  %d-->10  %d-->5  %d-->2  %d-->1\n",y2,y3,y4,y5,y6);
                               }
                               
    if (20>a && a >=10)
          for(y3=0;y3<=(a/10);y3++)
                  for(y4=0;y4<=(a/5);y4++)
                     for(y5=0;y5<=(a/2);y5++)
                        for(y6=0;y6<=a;y6++)
                            if(y3*10+y4*5+y5*2+y6==a)
                               {
                                 k++;
                                 printf("%d-->10  %d-->5  %d-->2  %d-->1\n",y3,y4,y5,y6);
                               }
                               
    if (10>a  && a >=5)
          for(y4=0;y4<=(a/5);y4++)
                     for(y5=0;y5<=(a/2);y5++)
                        for(y6=0;y6<=a;y6++)
                            if(y4*5+y5*2+y6==a)
                               {
                                 k++;
                                 printf("%d-->5  %d-->2  %d-->1\n",y4,y5,y6);
                               }
                               
    if (5>a && a >=2)
          for(y5=0;y5<=(a/2);y5++)
                        for(y6=0;y6<=a;y6++)
                            if(y5*2+y6==a)
                               {
                                 k++;
                                 printf("%d-->2  %d-->1\n",y5,y6);
                               }
                               
    if (2>a && a >=1)
           for(y6=0;y6<=a;y6++)
                            if(y6==a)
                               {
                                 k++;
                                 printf("%d-->1\n",y6);
                               }
                               
      if (a==0)
          printf("不用找钱\n");
           else
         printf("一共有%d种找法\n",k);
       
}
感觉太长.请帮优化一下.小弟刚学.不是太懂算法.