c语言贪心算法智力大冲浪与花生采摘两题
教师的细心解答,满意请采纳,谢谢
你知道答案吗
都是用C++写的,不建议只用纯C语言#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct Riddle {
int time;
int money;
};
struct gt{
bool operator()(Riddle& opl, Riddle& opr){
return opl.money > opr.money;
}
};
int main()
{
int m, n;
ifstream fin("riddle.in");
fin >> m >> n;
Riddle * riddles = new Riddle[n];
for (int i=0; i<n; ++i) {
fin >> riddles[i].time;
}
for (int i=0; i<n; ++i) {
fin >> riddles[i].money;
}
sort(riddles, riddles+n, gt() );
int * ridorder = new int[n];
for (int i=0; i<n; ++i) {
ridorder[i] = 0;
}
for (int i=0; i<n; ++i) {
int j;
for (j=riddles[i].time-1; j>=0 && ridorder[j]!=0; --j) {}
if (j >= 0) ridorder[j] = 1;
else m -= riddles[i].money;
}
cout << m << endl;
}
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define maxn 55
struct Peanut
{
int x, y, num;
}peanut[maxn * maxn];
int n, m, t, pcount;
bool operator < (const Peanut &a, const Peanut &b)
{
return a.num > b.num;
}
void input()
{
pcount = 0;
scanf("%d%d%d", &n, &m, &t);
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
int a;
scanf("%d", &a);
if (a)
{
peanut[pcount].x = i + 1;
peanut[pcount].y = j + 1;
peanut[pcount].num = a;
pcount++;
}
}
}
void work()
{
int nowtime = peanut[0].x + 1;
if (nowtime + peanut[0].x > t)
{
printf("0\n");
return;
}
int ans = peanut[0].num;
for (int i = 1; i < pcount; i++)
{
nowtime += abs(peanut[i].x - peanut[i - 1].x) + abs(peanut[i].y - peanut[i - 1].y) + 1;
if (nowtime + peanut[i].x > t)
break;
ans += peanut[i].num;
}
printf("%d\n", ans);
}
int main()
{
//freopen("t.txt", "r", stdin);
int t;
scanf("%d", &t);
while (t--)
{
input();
sort(peanut, peanut + pcount);
work();
}
return 0;
}
c语言课程设计总结
详情请查看视频回答
FreePascal语言与基础算法基础图书目录
进入算法基础部分,提升编程实战能力:第一章:高精度计算,学习如何处理大数值运算。第二章:数据排序方法,掌握算法在数据组织中的应用。第三章:递推与递归算法,理解问题的分治策略。第四章:深入理解搜索与回溯算法,解决复杂问题的策略。第五章:贪心算法与第五章:分治算法,优化问题求解的思路。第...
C语言程序问题——活动安排问题
例如 :当有3项活动要安排,开始时间和结束时间分别是1 2、3 5、4 5,这时可以安排第一项和第二项活动,也可以安排第一项和第三项活动,前者的会场使用时间是5,后者是4,这时是输出4还是5,题目中没用指出。先假设测试数据不会出现上述情况,则利用贪心算法求解活动安排问题是一种最常用的方法:#...
c语言程序设计---三子棋(相当于五子棋的小游戏)
首先你要知道学这些只是说明你是计算机专业的.五子棋并不是什么大型项目开发,只是一个算法的实现而已.如果你的C有够熟练,写一个五子棋算法很简单 你可以先在网上搜一下五子棋的算法,按他写的思路写一个程序出来,之后可以自己想想如何实现
三、字词模型(Subword Model)
谷歌的NMT模型用了BPE的变种,称作wordpiece model,BPE中利用了n-gram count来更新词汇库, 而wordpiece model中则用了一种贪心算法来最大化语言模型概率,即选取新的n-gram时都是选择使 得perplexity减少最多的ngram。在大多数情况下我们还是采用word level模型,而只在遇到OOV的情况才采用character ...
c语言计算
计算顺序确实是:c=(--a)+(--a)+(a++);以a=10为例:第一个(--a)之后,a=9,c=9;第二个(--a)之后,a=8,c=9+8=17;最后加上(a++),先算c=17+a=25,a再自加,所以a=9
想自学C语言!!学习C就看《C语言程序设计》就行了吗??
看完《C语言程序设计》只是个开始,只是让你入门,后面还有很多东西等着你学 基础书这本就很好,很适合初学者入门 三级难度不大,看完《C语言程序设计》而且都能懂的话上机就没问题了,就算你没看懂你也可以把上机题库的题都背过,有一百套,不过可以说就只有二十几套,剩下的都是稍微变化了一下 ...
算法与程序有何区别和联系?
区别:一、形式不同 1、算法:算法在描述上一般使用半形式化的语言。2、程序:程序是用形式化的计算机语言描述的。二、性质不同 1、算法:算法是解决问题的步骤。2、程序:程序是算法的代码实现。三、特点不同 1、算法:算法要依靠程序来完成功能。2、程序:程序需要算法作为灵魂。
这道c语言程序题为什么答案是0不是1?谢谢
c语言是不能这样写判断的,应该是a>b && b>c,如果写a>b>c,会变成这样,先判断a>b,结果为真,即为1,再拿结果与c比较,即1>c,为假,即0。所以输出是0。
用C语言写五子棋人机对战时使用贪心算法的思路是什么,求大神指导!_百度...
什么是贪心算法?不懂。当年我们写五子棋的时候都是通过设置优先级来做的。
西念吗替: LZ在开始研究ACM嘛?#include int least_num_cash(int _money){ /*直接贪心,能用大张的钞票尽量用大张的*/ int ret=0; while(_money!=0) { if(_money>=100...
泰州市15383333169: c语言如何写一个判断贪心算法不是最优解 - ?
西念吗替: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解.为了证明不是最优解,就只能对0-1背包这类的进行枚举了
泰州市15383333169: C语言算法,用贪心法 - ?
西念吗替: 贪心算法虽然不是最好的,但毕竟是你要求的... 随机取一个人, 循环开始:随机取一个没接水的人, 比较两个人的接水时间大小,让小的先接. 累加总等待时间为接水时间. 循环体结束. 输出平均接水等待时间累加T/人数n
泰州市15383333169: 贪心算法求最优分解 C语言程序 - ?
西念吗替: 答案是正确的 程序没有出错 是因为你的控制语句写错了 背包问题讲的是不能超过背包的总重量 三种物品的单位价值分别为1.2、1.5、1.25 挑选时先选1.5、1.25、1.2 重量分别为 10 8 最后才是2 建议你最好用一个数组对货物进行编号 这样分析时容易点 并且输出时清晰一点
泰州市15383333169: C语言关于贪心算法的(很简单) - ?
西念吗替: long a,b,s,k,num,c[7]={100,50,20,10,5,2,1} //a,顾客付款;b,实际售价;num找钱数. for(s=a-b,k=0,num=0;k<7 && s>0;k++){num+=(long)s/c[k];s-=num*c[k]; } printf ("%d",num);//k可以不要
泰州市15383333169: “贪心算法”?
西念吗替: 形象的说,就是一个人很贪心,吃了人家的东西.
泰州市15383333169: c语言问题急!!!(用贪心算法) - ?
西念吗替: 题分析:根据常识,我们到店里买东西找钱时,老板总是先给我们最大面值的,要是不够再找面值小一点的,直到找满为止.如果老板都给你找分数的或者几角的,那你肯定不干,另外,他也可能没有那么多零碎的钱给你找.其实这就是一个...
泰州市15383333169: 求C语言或c++的贪心算法的例题 - ?
西念吗替: 比如: int a=3,b=4,c; c=a+++b; 将被解释为 c=(a++)+b; 而不会被解释为 c=a+(++b); 贪心算法的主要意义是从左至右依次解释最多的符号!
泰州市15383333169: c语言背包问题?
西念吗替: 算法分析:使用贪心策略求解此类问题时,首先要选出最优的度量标准.可供选择的度量标准有三种:价值,容量,单位价值(v/w,价值/重量).显然,价值高的物品容量可能太大,容量大的物品价值也可能很低.最优的度量标准是单位价值...
泰州市15383333169: 关于c语言的田忌赛马问题. - ?
西念吗替: 应该是贪心的思路有点问题: 解题思路: 贪心算法. 如果当前最好的马可以胜齐王最好的马,那么让这两匹马比一场. 如果当前最差的马能胜齐王最差的马,那么让这两匹马比一场. 如果上面两个条件都不满足,那么让当前最差的马和齐王最好的马比一场.