代码一 ,小明的背包1,代码见下
cpp
#include <iostream>
#include <cstring>
using namespace std;
#define maxn 110
#define maxm 1001
#define inf -1
int w[maxn], v[maxn];
int dp[maxn][maxm];
int main()
{
memset(dp, inf, sizeof(dp));
dp[0][0] = 0;
int n, V;
cin >> n >> V;
for(int i=1; i<=n; ++i){
cin >> w[i] >> v[i];
}
for(int i=1; i<=n; ++i){
for(int j=0; j<=V; ++j){
dp[i][j] = dp[i-1][j];
if(j - w[i] >= 0){
int x=dp[i-1][j-w[i]] + v[i];
if(x > dp[i][j]){
dp[i][j] = x;
}
}
}
}
int x = 0;
for(int i=0; i<=V; ++i){
x = max(x, dp[n][i]);
}
cout << x << endl;
// 请在此输入您的代码
return 0;
}
代码二,对应蓝桥云课,小明的彩灯,代码见下
cpp
#include <iostream>
using namespace std;
#define maxn 500005
long long a[maxn];
long long s[maxn];
int main()
{
int n, q;
cin >> n >> q;
for(int i=1; i<=n; ++i){
cin >> a[i];
}
s[0] = 0;
while(q--){
int l, r, x;
cin >> l >> r >> x;
s[l] += x;
s[r+1] -= x;
}
for(int i=1; i<=n; ++i){
s[i] = s[i] + s[i-1];
a[i] = a[i] + s[i];
if(i != 1){
cout << ' ';
}
if(a[i] < 0){
cout << 0;
}else{
cout << a[i];
}
}
cout << endl;
// 请在此输入您的代码
return 0;
}
代码三,对应蓝桥云课 走迷宫,代码见下
cpp
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
#define maxn 110
#define base 101
int mat[maxn][maxn];
struct p{
int x, y;
};
int dir[4][2] = {
{0, 1}, {1, 0}, {0, -1}, {-1, 0}
};
int main()
{
int hash[maxn][maxn];
memset(hash, -1, sizeof(hash));
int n,m;
queue<int> q;
cin >> n >> m;
for(int i=1; i<=n; ++i){
for(int j=1; j<=m; ++j){
cin >> mat[i][j];
}
}
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
q.push(x1*base + y1);
hash[x1][y1] = 0;
while(!q.empty()){
int v = q.front();
q.pop();
int x = v / base;
int y = v % base;
if(x == x2 && y == y2){
break;
}
for(int i=0; i<4; ++i){
int tx = x + dir[i][0];
int ty = y + dir[i][1];
if(tx < 1 || tx > n || ty < 1 || ty > m){
continue;
}
if(mat[tx][ty] == 0){
continue;
}
if(hash[tx][ty] == -1){
hash[tx][ty] = hash[x][y] + 1;
q.push(tx*base + ty);
}
}
}
cout << hash[x2][y2] << endl;
// 请在此输入您的代码
return 0;
}