题目
尝试暴力法
首先,作为一个小白,暴力法你会么……
把题目写在注释里,挺好的,省的来回翻了
暴力法,好像不会;大脑一片空白
这个题,常见吧,见过不止一次吧;会么?不会。你那个见过,只是省掉了读题的时间,其它的,还是新的。很正常……小白……
暴力法,象棋决策树么?
引用自:人工智能下象棋,走一步,能看几步?|漫画 (baidu.com)
好像真的有这么个方法的……
算法小白的入门日记(三十四)你以为暴力解法很简单?——决策树和回溯算法-张柏沛IT博客 (zbpblog.com)
但是,每步多少个叉啊?——最多K个。很合理……
这是多少复杂度啊?
8层,每个节点K个叉……这个暴力法,没法求……想想算了。
作为一个小白,能想到这个,挺好的了……
那么,这个暴力法,怎么实现?手写多叉树?
也用自己的脑子想过了,没想到好的办法而已;再想也没啥实际作用了,百度启动!
这个树,可以用递归表示?正宗的递归原来这么猛?
你这个递归,看着很猛,很高级;但是,学不会啊……
这个:学习算法和刷题的框架思维 :: labuladong的算法小抄 (gitee.io)
里面这么说的,有道理啊……
尝试贪婪法
我怎么知道,这个贪心法,是局部最优解还是全局最优解?
如果一套钱币设计合理,则最小兑现问题就满足贪婪选择性质——这么猛的吗?
好像是的,生活里也是这么干的,原来是沾了设计合理的光呐
引用自:(82条消息) 钱币找零问题,活动选择安排问题(C++)贪心算法_a'ゞfan的博客-CSDN博客_钱币找零问题
形参怎么用数组?
只传地址不传值,好像有点印象……
(82条消息) C++中数组作为形参的方法_乔慕宾的博客-CSDN博客_c++数组作为形参
//假设 1 元、 2 元、 5 元、 10 元、 20 元、 50 元、 100 元的纸币,张数不限制,
//现在要用来支付 K 元,至少要多少张纸币?
//
//输入格式
//输入数据为一个整数
//
//输出格式
//输出数据为字符串,例:"需要 x 张 xx 块的"。
#include<iostream>
using namespace std;
//贪心法
void greedySolve(int k,int* moneyValue,int* result){
//从大往小了算
for(int i=0;i<=5;++i){
while(true){
if(k-moneyValue[i]<0){
break;
}
k=k-moneyValue[i];
result[i]++;
}
}
}
int main(){
int moneyValue[6]={100,50,20,10,5,1};
int result[6]={0};
int k=0;
cin>>k;
greedySolve(k,moneyValue,result);
for(int i=0;i<=5;++i){
if(result[i]){
cout<<"需要"<<result[i]<<"张"<<moneyValue[i]<<"块的"<<endl;
}
}
}
后记
编程恐惧症,小白,编程慢;好像是一套的,你都占了,很正常……可能100年后就克服了。看,还是可以克服的,只是不一定活那么长而已。