1272:【例9.16】分组背包 http://ybt.ssoier.cn:8088/problem_show.php?pid=1272
#include<bits/stdc++.h> using namespace std; struct qwert{ int w,v; }a[13][31]; int V,N,T; int cnt[13],f[203]; int main(){ cin>>V>>N>>T; for(int i=1;i<=N;i++){ int x_1,x_2,x_3; cin>>x_1>>x_2>>x_3; a[x_3][++cnt[x_3]].w=x_1; a[x_3][cnt[x_3]].v=x_2; } for(int i=1;i<=T;i++){ for(int k=V;k>=0;k--){ for(int j=1;j<=cnt[i];j++){ if(k>=a[i][j].w)f[k]=max(f[k],f[k-a[i][j].w]+a[i][j].v); } } } cout<<f[V]; return 0; }
//100%
//待纠错
#include<bits/stdc++.h> using namespace std; struct qwert{ int w,v; }a[13][31]; int V,N,T; int cnt[13],f[13][203]; int main(){ cin>>V>>N>>T; for(int i=1;i<=N;i++){ int x_1,x_2,x_3; cin>>x_1>>x_2>>x_3; a[x_3][++cnt[x_3]].w=x_1; a[x_3][cnt[x_3]].v=x_2; }cout<<endl; for(int i=1;i<=T;i++){ for(int k=V;k>=0;k--){ for(int j=1;j<=cnt[i];j++){ if(k>=a[i][j].w)f[i][k]=max(f[i-1][k],f[i-1][k-a[i][j].w]+a[i][j].v); else f[i][k]=max(f[i-1][k],f[i][k]); } } for(int o=0;o<=V;o++){ cout<<f[i][o]<<" "; }cout<<endl; } cout<<f[T][V]; return 0; } //f[i][j]->前i组总重在j内的最大价值 //未完成
1329:【例8.2】细胞 http://ybt.ssoier.cn:8088/problem_show.php?pid=1329
#include<bits/stdc++.h> using namespace std; struct pos{ int x,y; }; int n,m; int a[203][203]; bool vis[203][203]; int tx[4]={1,0,-1,0}; int ty[4]={0,1,0,-1}; void bfs(int bx,int by){ queue<pos> q; while(!q.empty())q.pop(); vis[bx][by]=1; q.push({bx,by}); while(!q.empty()){ pos c=q.front();q.pop(); for(int i=0;i<4;i++){ int nx=c.x+tx[i]; int ny=c.y+ty[i]; if(nx>0&&nx<=n&&ny>0&&ny<=m&&!vis[nx][ny]&&a[nx][ny]!=0){ vis[nx][ny]=1; q.push({nx,ny}); } } } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ char ch; cin>>ch; a[i][j]=ch-'0'; } } int sum=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(!vis[i][j]&&a[i][j]!=0){ bfs(i,j); sum++; } } } cout<<sum; return 0; }
1330:【例8.3】最少步数 http://ybt.ssoier.cn:8088/problem_show.php?pid=1330
#include<bits/stdc++.h> using namespace std; struct pos{ int x,y,s; }; int n1,n2,m1,m2; bool vis[103][103]; int tx[12]={2,2,-2,-2,2,2,-2,-2,1,1,-1,-1}; int ty[12]={-2,2,-2,2,1,-1,1,-1,2,-2,2,-2}; void bfs(int bx,int by){ queue<pos> q; memset(vis,0,sizeof(vis)); while(!q.empty())q.pop(); vis[bx][by]=1; q.push({bx,by,0}); while(!q.empty()){ pos c=q.front();q.pop(); if(c.x==1&&c.y==1){ cout<<c.s<<endl; break; } for(int i=0;i<12;i++){ int nx=c.x+tx[i]; int ny=c.y+ty[i]; if(nx>0&&nx<=100&&ny>0&&ny<=100&&!vis[nx][ny]){ vis[nx][ny]=1; q.push({nx,ny,c.s+1}); } } } } int main(){ cin>>n1>>n2>>m1>>m2; bfs(n1,n2); bfs(m1,m2); return 0; }
标签:cnt,22,int,203,vis,afternoon,&&,bx From: https://www.cnblogs.com/zangqy/p/17573403.html