题目要求都在图片里,要求用C++。谢谢
3条回答 默认 最新
- threenewbee 2019-10-20 07:53关注
#include <stdlib.h> #include <string.h> #include <iostream> using namespace std; int* initdkntor(int n, int * brokens, int m) { int * p = (int *)malloc(sizeof(int) * n); memset(p, 0, sizeof(int) * n); for (int i = 0; i < m; i++) { for (int j = brokens[i * 2] - 1; j < brokens[i * 2 + 1]; j++) p[j] = 1; } return p; } int* tryit(int *seed, int n, int a, int b) { int * p = (int *)malloc(sizeof(int) * n); memcpy(p, seed, sizeof(int) * n); for (int i = a - 1; i < b; i++) p[i] = 0; return p; } int check(int *p, int n) { for (int i = 0; i < n; i++) if (p[i]) return 1; return 0; } int solve(int *seed, int seedcost, int n, int *sp, int spn) { if (!check(seed, n)) return seedcost; if (!spn) return -1; int min = -1; for (int i = 0; i < spn; i++) { int * seed1 = tryit(seed, n, sp[i*3], sp[i*3+1]); int cost = solve(seed1, seedcost + sp[i*3+2], n, sp + 3 * (i+1), spn - i-1); if (cost != -1) if (cost < min || min == -1) min = cost; } return min; } int main() { int s; int n; int m; cin >> n >> m >> s; int * bk = new int[n * 2]; for (int i = 0; i < n; i++) cin >> bk[i*2] >> bk[i*2+1]; int * sp = new int[m * 3]; for (int i = 0; i < m; i++) cin >> sp[i*3] >> sp[i*3+1] >> sp[i*3+2]; int * dkntor = initdkntor(s, bk, n); int result = solve(dkntor, 0, s, sp, m); cout << result << endl; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 基于卷积神经网络的声纹识别
- ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
- ¥100 为什么这个恒流源电路不能恒流?
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 stm32开发clion时遇到的编译问题