排队找零问题有10个人排队购一件价为5元的商品其中一半人拿一张10元人民币另一半人拿一张5元的人民币要使售货员在售货中不发生找钱困难问这10个人应该如何排队?找出所有排队方案假设售货员一开始就没有准备零钱。贪心算法C语言
#include<stdio.h> int main() { int i,j,k; int a[10]={5,5,5,5,5,10,10,10,10,10}; //初始化10个人的钱数 for(i=0;i<10;i++) //第一个人取5元 { if(a[i]==5) //如果第i个人有5元 { for(j=0;j<10;j++) //从第i+1个人开始找 { if(a[j]==10) //如果第j个人有10元 { a[i]=10; //第i个人取10元 a[j]=5; //第j个人取5元 break; //找到就退出 } } } } for(i=0;i<10;i++) //第一个人取10元 { if(a[i]==10) //如果第i个人有10元 { for(j=0;j<10;j++) //从第i+1个人开始找 { if(a[j]==5) //如果第j个人有5元 { for(k=j+1;k<10;k++) //从第j+1个人开始找 { if(a[k]==10) //如果第k个人有10元 { a[i]=5; //第i个人取5元 a[j]=10; //第j个人取10元 a[k]=5; //第k个人取5元 break; //找到就退出 } } } } } } for(i=0;i<10;i++) //输出所有排队方案 { printf("%d ",a[i]); } return 0;
原文地址: https://www.cveoy.top/t/topic/fJvb 著作权归作者所有。请勿转载和采集!