ACM,动态规划,数字游戏
来源:互联网 发布:攻是什么感觉知乎 编辑:程序博客网 时间:2024/05/22 16:03
// ACM学习-动态规划-数字游戏.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
struct Tnum{
int a, b;
};
Tnum num[210];//权值
int sum[210][210];//记录目标值,即题目分析中的函数f
int mark[210][210];//记录是否是可行解,0表示不是可行解,1表示是可行解
int n, m;
//输入数据
void init(){
int i;
cin >> n >> m;
//输入a序列
for (i = 1; i <=n; i++)
cin >> num[i].a;
for (i = 1; i <= n; i++)
cin >> num[i].b;
}
int cmp(const void*a, const void *b){
Tnum*aa = (Tnum*)a;
Tnum*bb = (Tnum*)b;
return bb->b - aa->b;
}
void work(){
//for (int i = 0; i < 10; i++)cout << sum[i][i + 1] << endl;
int i, j, k, t, ans;
//对权值从大到小排序
qsort(num+1, n, sizeof(num[1]), cmp);
for (int i = 1; i <=n; i++)cout << num[i].a <<" :"<<num[i].b<< ends;
cout << endl;
memset(mark, 0, sizeof(mark));
for (i = 0; i <=n; i++){
mark[i][0] = 1;
sum[i][0] = 0;
for (j = 0; j < i&&j < m; j++){
mark[i][j + 1] = mark[i - 1][j + 1];
sum[i][j + 1] = sum[i - 1][j + 1];
cout << "sum[" << i << "][" << j + 1 << "]=" << sum[i][j + 1] << endl;
if (mark[i][j] && (mark[i][j + 1] == 0 || sum[i-1][j]
+ num[i].a - num[i].b*j>sum[i][j+1])){
mark[i][j + 1] = 1;
sum[i][j + 1] = sum[i-1][j] + num[i].a - num[i].b*j;
cout << "改变sum[" << i << "][" << j + 1 << "]=" << sum[i][j + 1] << endl;
}
}
}
ans = sum[n][m];
cout << ans << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
init();
work();
return 0;
}
//
#include "stdafx.h"
#include<iostream>
using namespace std;
struct Tnum{
int a, b;
};
Tnum num[210];//权值
int sum[210][210];//记录目标值,即题目分析中的函数f
int mark[210][210];//记录是否是可行解,0表示不是可行解,1表示是可行解
int n, m;
//输入数据
void init(){
int i;
cin >> n >> m;
//输入a序列
for (i = 1; i <=n; i++)
cin >> num[i].a;
for (i = 1; i <= n; i++)
cin >> num[i].b;
}
int cmp(const void*a, const void *b){
Tnum*aa = (Tnum*)a;
Tnum*bb = (Tnum*)b;
return bb->b - aa->b;
}
void work(){
//for (int i = 0; i < 10; i++)cout << sum[i][i + 1] << endl;
int i, j, k, t, ans;
//对权值从大到小排序
qsort(num+1, n, sizeof(num[1]), cmp);
for (int i = 1; i <=n; i++)cout << num[i].a <<" :"<<num[i].b<< ends;
cout << endl;
memset(mark, 0, sizeof(mark));
for (i = 0; i <=n; i++){
mark[i][0] = 1;
sum[i][0] = 0;
for (j = 0; j < i&&j < m; j++){
mark[i][j + 1] = mark[i - 1][j + 1];
sum[i][j + 1] = sum[i - 1][j + 1];
cout << "sum[" << i << "][" << j + 1 << "]=" << sum[i][j + 1] << endl;
if (mark[i][j] && (mark[i][j + 1] == 0 || sum[i-1][j]
+ num[i].a - num[i].b*j>sum[i][j+1])){
mark[i][j + 1] = 1;
sum[i][j + 1] = sum[i-1][j] + num[i].a - num[i].b*j;
cout << "改变sum[" << i << "][" << j + 1 << "]=" << sum[i][j + 1] << endl;
}
}
}
ans = sum[n][m];
cout << ans << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
init();
work();
return 0;
}
0 0
- ACM,动态规划,数字游戏
- 动态规划:数字游戏
- 【动态规划】【RQ52】数字游戏
- codevs动态规划 数字游戏
- 【动态规划】[NOIP2003]数字游戏
- ACM学习-动态规划-取数字问题
- ACM-动态规划10-数字组合
- SOJ2113: 数字游戏题解动态规划DP
- 【动态规划】Vijos P1218 数字游戏(NOIP2003普及组)
- Vijos P1218 数字游戏(动态规划,环形DP)
- [acm]动态规划-Robberies
- ACM动态规划系列
- acm-poj1050(动态规划)
- ACM动态规划总结
- acm 动态规划
- acm 动态规划总结
- ACM 动态规划笔记
- ACM(动态规划)
- 第十一周第一天
- 工作中的你是否还在耍个性
- 用gdb分析core文件及常见gdb命令操作示例
- 软件测试面试题
- nyoj 99 单词拼接(欧拉图 )
- ACM,动态规划,数字游戏
- ATL、ActiveX和COM 技术杂谈
- 最长无重复子串
- Chrome神器Vimium快捷键学习记录
- OpenWrt-BarrierBreaker版本编译
- 用C++编写dll并使用
- BroadcastReceiver
- 分享内容的截图的实现方法
- Cocos2d-Lua 3.3 API的用法 -- (一)