使字符串第a个字符与第b个字符交换`
#includeusing namespace std; int dp[109][109],a[109][109]; char c[100009]; int main() { int t,i,flag,j,k,m,n,x,y,cnt,o,l,r; char h; cin>>c>>x>>y; h=c[x-1]; c[x-1]=c[y-1]; c[y-1]=h; cout< B - Who is missing? 题意 共有N种卡片,每种卡片有四张,输入4N-1张卡片,求缺少哪张卡片
#includeC - Route Map 题意using namespace std; int vis[900009],a[109][109]; char c[100009]; int main() { int t,i,flag,j,k,m,n,x,y,cnt,o,l,r; cin>>n; for(i=1;i<=n*4-1;i++) { scanf("%d",&k); vis[k]++; } for(i=1;i<=n;i++) if(vis[i]<4)printf("%d",i); return 0; } 共有n个车站,有m个车站列车会停靠,求各个车站列车是否会停靠
#includeD - Dance 题意using namespace std; int vis[900009],a[109][109]; string s[100009]; int main() { int t,i,flag,j,k,m,n,x,y,cnt,o,l,r; cin>>n>>m; string s1; map has; for(i=1;i<=n;i++) { cin>>s[i]; } for(i=1;i<=m;i++){ cin>>s1; has[s1]=1; } for(i=1;i<=n;i++) { if(has[s[i]]==1)printf("Yesn"); else printf("Non"); } return 0; } 共有2N个人,编号为1-2N,现要人们两两配对,若编号为i的人想与编号为j的人配对,i必须小于j,i与j配对后获得亲和力B。所有人配对完成后亲和力分别为B1,B2…BN,总乐趣为B1⊕B2⊕…⊕BN。求所有配对组合中总乐趣的最大值。
做法使用dfs搜索所有情况,因为只能找编号比自己大的人配对,所以每次先找出当前需要配对的人 flag,再从flag+1到2N中寻找当前未配对的人与flag配对。当flag等于2N时说明所有人配对完成。
#includeusing namespace std; typedef long long ll; ll vis[909],a[109][109],n,ma=0; void dfs(ll flag,ll val){//falg表示当前需要配对的人的编号 val表示当前总乐趣 ll i,j; if(flag==n*2){ ma=max(ma,val); return ; } ll fl=0,ci; if(vis[flag]){//若flag已经与其他人配对则寻找下一个需要配对的人 dfs(flag+1,val); } else { for(i=flag+1;i<=n*2;i++){//寻找当前未配对的人与flag配对 if(vis[i])continue; vis[i]=1; vis[flag]=1; dfs(flag+1,val^a[flag][i]); vis[flag]=0; vis[i]=0; } } } int main() { ll t,i,j,k,m,x,y,cnt,o,l,r; cin>>n; for(i=1;i<=n*2-1;i++){ for(j=i+1;j<=n*2;j++) scanf("%lld",&a[i][j]); } dfs(1,0); cout< 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)