编写程序,采用贪婪法编程实现人民币的找零 求找零钱问题和背包贪心算法问题(背包里物体可分解)C语言程序

\u8d2a\u5a6a\u6cd5\u7b97\u6cd5\uff0c\u6c42\u627e\u96f6\u7684\u6700\u4f18\u65b9\u6848\uff0c\u5373\u4ece\u9762\u503c\u6700\u5927\u7684\u5f00\u59cb\u627e\u96f6\uff01\u9762\u503c\u4e3a:100\u5143\uff0c50\u5143\uff0c10\u5143\uff0c5\u5143\uff0c1\u5143\uff0c0.5,0.1

\u6211\u5e2e\u4f60\u628a\u4ee3\u7801\u4fee\u6539\u4e86\u4e00\u4e0b
#include#include
#define Max 8
void exchange(double,int[]);
double moneyValues[Max]={100,50,20,10,5,1,0.5,0.1};
int main(){ int i;
int store[Max]={0};
double money;
printf("Input money that you will exchange!:");
scanf("%lf",&money);
double premoney=money;
exchange(money,store);
printf("%f \n",premoney);
for(i=0;i<Max;i++){
if(store[i]>0)
printf("%d : %f\n",store[i],moneyValues[i]);
}
return 1;
}
void exchange(double exmoney,int store[]){ int i;
for(i=0;i<Max;i++) {
if(exmoney>moneyValues[i]) break;
}
while(exmoney>0 && i<Max) {
if(exmoney>moneyValues[i]){
exmoney-=moneyValues[i];
store[i]++;
}else if(exmoney0.05){
store[Max-1]++;
break;
}
else i++;
}
return;
}

\u7136\u540e\uff0c\u6211\u89c9\u5f97\u6709\u4e9b\u5730\u65b9\u4f60\u5199\u5f97\u5570\u55e6\u4e86\uff0c\u5e2e\u4f60\u7b80\u5316\u4e86\u4e00\u4e0b
#include#include
#define Max 8
void exchange(double,int[]);
double moneyValues[Max]={100,50,20,10,5,1,0.5,0.1};
int main(){ int i;
int store[Max]={0};
double money;
printf("Input money that you will exchange!:");
scanf("%lf",&money);
exchange(money,store);
printf("%f\n",money); for(i=0;i<Max;i++){
if(store[i]>0)
printf("%d : %f\n",store[i],moneyValues[i]);
}
return 1;
}
void exchange(double money,int store[]){ int i=0;
while(money>0 && i<Max) {
if(money>moneyValues[i]){
money-=moneyValues[i];
store[i]++;
}else if(money0.05){
store[Max-1]++;
break;
}
else i++;
}
return;
}








\u5206\u6570\u592a\u5c11\u4e86\uff0c\u7b2c\u4e00\u4e2a\u662f\u52a8\u6001\u89c4\u5212\uff0c\u7b2c\u4e8c\u4e2a\u662f\u8d2a\u5fc3\uff0c\u90fd\u633a\u7b80\u5355\u7684
\u8fd8\u662f\u7ed9\u4f60\u5199\u5427
\u7b2c\u4e00\u9898\uff1a
#include
#include
int a[2000],b[200000],n,m,i,j;
int main()
{
scanf("%d",&n);//\u94b1\u5e01\u79cd\u7c7b
for (i=0;i<n;i++)
scanf("%d",&a[i]);//\u6bcf\u4e2a\u94b1\u5e01\u7684\u9762\u503c
scanf("%d",&m);//\u9700\u8981\u8ba1\u7b97\u7684\u94b1\u5e01\u7684\u9762\u503c
memset(b,0,sizeof(b));
for (i=0;i<n;i++)
b[a[i]]=1;
for (i=1;i<=m;i++)
for (j=0;j<n;j++)
if (i-a[j]>0)
if (b[i]==0)
{
if (b[i-a[j]]!=0)
b[i]=b[i-a[j]]+1;
}
else
{
if (b[i-a[j]]!=0&&b[i-a[j]]+1<b[i])
b[i]=b[i-a[j]]+1;
}
if (b[m]==0) printf("-1\n");//\u627e\u4e0d\u5f00\u8f93\u51fa-1
else printf("%d\n",b[m]);//\u53ef\u4ee5\u627e\u5230\u4ea4\u6362\u7b56\u7565\uff0c\u8f93\u51fa\u6700\u5c0f\u7968\u6570
return 0;
}


\u7b2c\u4e8c\u9898\uff1a
#include
#include
using namespace std;
struct good//\u8868\u793a\u7269\u54c1\u7684\u7ed3\u6784\u4f53
{
double p;//\u4ef7\u503c
double w;//\u91cd\u91cf
double r;//\u4ef7\u503c\u4e0e\u91cd\u91cf\u7684\u6bd4
}a[2000];
double s,value,m;
int i,n;
bool bigger(good a,good b)
{
return a.r>b.r;
}
int main()
{
scanf("%d",&n);//\u7269\u54c1\u4e2a\u6570
for (i=0;i<n;i++)
{
scanf("%lf%lf",&a[i].w,&a[i].p);
a[i].r=a[i].p/a[i].w;
}
sort(a,a+n,bigger);//\u8c03\u7528sort\u6392\u5e8f\u51fd\u6570\uff0c\u4f60\u5927\u6982\u4e0d\u4ecb\u610f\u5427\uff0c\u6309\u7167\u4ef7\u503c\u4e0e\u91cd\u91cf\u6bd4\u6392\u5e8f\u8d2a\u5fc3
scanf("%lf",&m);//\u8bfb\u5165\u5305\u7684\u5bb9\u91cfm
s=0;//\u5305\u5185\u73b0\u5b58\u8d27\u54c1\u7684\u91cd\u91cf
value=0;//\u5305\u5185\u73b0\u5b58\u8d27\u54c1\u603b\u4ef7\u503c
for (i=0;i<n&&s+a[i].w<=m;i++)
{
value+=a[i].p;
s+=a[i].w;
}
printf("The total value in the bag is %.2lf.\n",value);//\u8f93\u51fa\u7ed3\u679c
return 0;
}

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。
故:
#include <stdio.h>
int main()
{
int a[6]={100,50,20,10,5,1};//定义金数数目,忽视1块钱以下的。。
int money,tmpMoney=0;
scanf("%d",&money);//输入想要换算成零钱的值。
for(int i=0;i<6;i++){//由于上面数组有六个值。循环六次
while(money>=a[i]){//当钱额小于面值时退出循环
money-=a[i];//当前金额减去面值
tmpMoney++;//保存当前面值的张数
}
printf("%d元的张数为:%d\n",a[i],tmpMoney);
tmpMoney=0;//把这下一次的数量清零
}
}
想要找零设置角和分的可以,只要把类型改为float类。或把值*10倍

SCIP 上有例子

  • 宸鐢ㄨ椽蹇冪畻娉,璁$畻鍑哄瓧绗︿覆鍥炴枃
    绛旓細缁欏畾涓涓寘鍚ぇ鍐欏瓧姣嶅拰灏忓啓瀛楁瘝鐨勫瓧绗︿覆锛屾壘鍒伴氳繃杩欎簺瀛楁瘝鏋勯犳垚鐨勬渶闀跨殑鍥炴枃涓层傚湪鏋勯犺繃绋嬩腑锛岃娉ㄦ剰鍖哄垎澶у皬鍐欍傛瘮濡 "Aa" 涓嶈兘褰撳仛涓涓洖鏂囧瓧绗︿覆銆傛敞鎰:鍋囪瀛楃涓茬殑闀垮害涓嶄細瓒呰繃 1010銆傜ず渚 1:杈撳叆:"abccccdd"杈撳嚭:7 瑙i噴:鎴戜滑鍙互鏋勯犵殑鏈闀跨殑鍥炴枃涓叉槸"dccaccd", 瀹冪殑闀垮害鏄 7銆傜粰瀹氫竴涓...
  • 璐績绠楁硶:鏈変竴涓猲涓笉绛夋暣鏁扮殑鏁扮粍,姣忔鍒燼,b,鍔犲叆a*b+1,濡傛涓嬪幓鐩村埌...
    绛旓細//杩欎釜搴旇寰堢畝鍗曞惂 include <stdio.h> void main(){ int n,data[100],a,b,i;printf("璇疯緭鍏ユ暟缁勪釜鏁:");scanf("%d",&n);printf("鏁扮粍鍊:");for(i=0;i<n;i++)scanf("%d",&data[i]);for (i=0;i<n-1;i++){ a=data[i];b=data[i+1];data[i+1]=a*b+1;} print...
  • C璇█,璐績绠楁硶,璐у竵鎵鹃浂闂?
    绛旓細璐績绠楁硶鎵鹃浂灏辨槸鐜板疄涓粠鏈澶ч潰棰濆紑濮嬫壘鐨勬濊矾銆備笉浠h〃鏄渶浼樿В锛屽彧鏄畻娉曚箣涓銆傜敱浜庨潰棰濊緭鍏ラ『搴忎笉瀹氾紝鎴戝厛瀵硅緭鍏ョ殑闈㈤杩涜闄嶅簭鎺掑簭銆備笅闈唬鐮侊細include <stdio.h> include <malloc.h> int main(){ int i,j,m,n,*ns=NULL,*cn=NULL,sum=0;printf("璇疯緭鍏ユ婚噾棰漨鍙婇浂閽辩绫籲锛"),scanf("...
  • C璇█涓粈涔堝彨绠楁硶,绠楁硶鍦绋嬪簭璁捐涓殑閲嶈浣滅敤
    绛旓細闂鎻忚堪:缂栧啓绋嬪簭,瀵圭粰瀹氱殑n(n鈮100),璁$畻骞惰緭鍑簁鐨勯樁涔榢!(k=1,2,鈥,n)鐨勫叏閮ㄦ湁鏁堟暟瀛椼 鐢变簬瑕佹眰鐨勬暣鏁板彲鑳藉ぇ澶ц秴鍑轰竴鑸暣鏁扮殑浣嶆暟,绋嬪簭鐢ㄤ竴缁...涓烘,瀵硅绠遍棶棰閲囩敤闈炲父绠鍗曠殑杩戜技绠楁硶,鍗璐┆娉銆傝绠楁硶渚濇灏嗙墿鍝佹斁鍒板畠绗竴涓兘鏀捐繘鍘荤殑绠卞瓙涓,璇ョ畻娉曡櫧涓嶈兘淇濊瘉鎵惧埌鏈浼樿В,浣嗚繕鏄兘鎵惧埌闈炲父濂界殑瑙...
  • 绠楁硶鏄负瑙e喅鏌愪釜闂鑰岃璁$殑姝ラ鍜屾柟娉曘備互涓嬪叧浜庣畻娉曠殑鍙欒堪涓,涓嶆...
    绛旓細銆愮瓟妗堛戯細D 鏈鑰冩煡鍏充簬绠楁硶鏂归潰鐨勫熀纭鐭ヨ瘑銆傜畻娉曟槸涓鸿В鍐虫煇涓棶棰樿岃璁$殑姝ラ鍜屾柟娉曪紝鏈変簡绠楁硶锛屽氨鍙互鎹缂栧啓绋嬪簭銆傚父鐢ㄧ畻娉曚富瑕佹湁杩唬娉曘佺┓涓炬悳绱㈡硶銆侀掓帹娉曘侀掑綊娉曘璐┆娉銆佸洖婧硶绛夈傝В鍐冲悓涓涓棶棰橈紝涓嶅悓鐨勪汉(鐢氳嚦鏄悓涓涓汉)鍙兘浼氬啓鍑哄嚑绉嶄笉鍚岀殑绠楁硶锛屼絾绠楁硶鏈変紭鍔d箣鍒嗐傞掓帹娉曟槸...
  • 浣曡皳绠楁硶?瀹冧笌绋嬪簭鏈変綍鍖哄埆?
    绛旓細绠楁硶鏄鐞嗚В鍐抽棶棰樼殑鎬濊矾鍙婂姙娉曪紝绋嬪簭璇█鏄寜鐓т竴瀹氳娉曟妸绠楁硶琛ㄨ揪鏉ャ傛墦涓瘮鏂癸紝浣犲ご鑴戦噷鏈変簡涓濂楁柊鎬濇兂锛屼竴涓柊鍙戠幇锛屼綘鍙互鐢ㄤ腑鏂鍐鍑烘潵锛屼篃鍙互鐢ㄨ嫳鏂囧啓鍑烘潵锛岃澶у鏄庣櫧銆傛濇兂鍜屽彂鐜板彲浠ユ瘮浣滄槸绠楁硶锛岀敤涓枃鎴栬嫳鏂囧彲浠ユ瘮浣滄槸绋嬪簭璇█銆傚洜姝ゆ牳蹇冩槸绠楁硶锛屼絾绋嬪簭璇█鏄瀹炵幇绠楁硶鐨勮浇浣撱傚湪璁$畻鏈虹瓑绯荤粺涓...
  • 椹殑閬嶅巻 椹湪8*8鐨勬鐩樹笂鑳介亶鍘嗗悧?
    绛旓細鐢变簬绋嬪簭閲囩敤鐨勬槸涓绉璐┆娉曪紝鏁翠釜鎵捐В杩囩▼鏄竴鐩村悜鍓嶏紝娌℃湁鍥炴函锛屾墍浠ヨ兘闈炲父蹇湴鎵惧埌瑙c備絾鏄紝瀵逛簬鏌愪簺寮濮嬩綅缃紝瀹為檯涓婃湁瑙o紝鑰岃绠楁硶涓嶈兘鎵惧埌瑙c傚浜庢壘涓嶅埌瑙g殑鎯呭喌锛岀▼搴鍙鏀瑰彉8绉嶅彲鑳藉嚭鍙g殑閫夋嫨椤哄簭锛屽氨鑳芥壘鍒拌В銆傛敼鍙樺嚭鍙i夋嫨椤哄簭锛屽氨鏄敼鍙樻湁鐩稿悓 鍑哄彛鏃剁殑閫夋嫨鏍囧噯銆備互涓嬬▼搴忚冭檻鍒拌繖绉嶆儏鍐碉紝...
  • 浠涔堟槸绠楁硶,閮戒粈涔,涓句釜渚嬪瓙,璋㈣阿
    绛旓細绗竴娆缂栧啓绋嬪簭鏄疉da Byron浜1842骞翠负宸磋礉濂囧垎鏋愭満缂栧啓姹傝В瑙d集鍔埄鏂圭▼鐨绋嬪簭锛鍥犳Ada Byron琚ぇ澶氭暟浜鸿涓烘槸涓栫晫涓婄涓浣嶇▼搴忓憳銆傚洜涓烘煡灏旀柉路宸磋礉濂(Charles Babbage)鏈兘瀹屾垚浠栫殑宸磋礉濂囧垎鏋愭満锛岃繖涓畻娉曟湭鑳藉湪宸磋礉濂囧垎鏋愭満涓婃墽琛屻 鍥犱负"well-defined procedure"缂哄皯鏁板涓婄簿纭殑瀹氫箟锛19涓栫邯鍜20涓栫邯鏃╂湡...
  • 鑳閲囩敤璐績绠楁硶姹傛渶浼樿В鐨勯棶棰,涓鑸叿澶()鎬ц川?
    绛旓細璐績绠楁硶锛鈥滆椽蹇冣濅簩瀛楅【鍚嶆濅箟锛屽洜姝ゅ叾瑙勫緥鐗瑰緛灏辨槸鏇村姞娉ㄩ噸褰撳墠鐨勭姸鎬侊紝璐績娉曞仛鍑虹殑閫夋嫨鏄浜庡綋鍓嶆墍澶勭姸鎬佺殑鏈浼橀夋嫨锛屽畠鐨勮В鍐抽棶棰樼殑瑙嗚鏄井瑙傜殑鈥滃眬閮ㄢ濓紝鑰屼笉鏄粠鍏ㄥ眬瀹忚鐨勮搴︽濊冨拰鐪嬪緟闂锛屾牴鎹繖鏍风殑鎬ц川銆傝姹傝椽蹇冩硶瑙e喅鐨勯棶棰樻湁鈥滄棤鍚庢晥鎬р濃斺斿綋鍓嶇殑鍐崇瓥涓嶄細褰卞搷鍒板悗缁殑鍐崇瓥锛屽洜涓...
  • 绠杩扮畻娉曠殑鍚勭琛ㄧず褰㈠紡
    绛旓細褰撴煇涓掑綊绠楁硶鑳借緝鏂逛究鍦拌浆鎹㈡垚閫掓帹绠楁硶鏃,閫氬父鎸夐掓帹绠楁硶缂栧啓绋嬪簭銆備緥濡備笂渚嬭绠楁枑娉㈤偅濂戞暟鍒楃殑绗琻椤圭殑鍑芥暟fib(n)搴閲囩敤閫掓帹绠楁硶,鍗充粠鏂愭尝閭e鏁板垪鐨勫墠...涓烘,瀵硅绠遍棶棰橀噰鐢ㄩ潪甯哥畝鍗曠殑杩戜技绠楁硶,鍗璐┆娉銆傝绠楁硶渚濇灏嗙墿鍝佹斁鍒板畠绗竴涓兘鏀捐繘鍘荤殑绠卞瓙涓,璇ョ畻娉曡櫧涓嶈兘淇濊瘉鎵惧埌鏈浼樿В,浣嗚繕鏄兘鎵惧埌闈炲父濂界殑瑙...
  • 扩展阅读:少儿编程是学什么的 ... m98调用子程序实例 ... 学编程一年大概多少钱 ... 数控机床简单程序编写 ... 如何自己编程做游戏 ... 宏程序编程口诀 ... python编程入门自学 ... 什么软件可以宏编程 ... 为什么不建议孩子学编程 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网