WA #2 求助
查看原帖
WA #2 求助
520748
_Ch1F4N_楼主2023/3/23 13:20

如题,代码如下:

#include<bits/stdc++.h>
using namespace std;
const int maxv=65536+114;
int f[maxv][120];//考虑前 i 个词,用了 j 些词,以 k 结尾 
string str[20];
int n;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>str[i];
	for(int i=1;i<=n;i++){
		f[1<<i][str[i][str[i].size()-1]]=str[i].size();
		for(int j=65537;j>=0;j--){
			f[j]['A']=max(f[j]['A'],f[j]['A']);
			f[j]['I']=max(f[j]['I'],f[j]['I']);
			f[j]['O']=max(f[j]['O'],f[j]['O']);
			f[j]['E']=max(f[j]['E'],f[j]['E']);
			f[j]['U']=max(f[j]['U'],f[j]['U']);
			for(int k=1;k<=n;k++){
				if((j&(1<<k))){
					f[j][str[k][str[k].size()-1]]=max(f[j][str[k][str[k].size()-1]],f[j-(1<<k)][str[k][0]]+(int)(str[k].size()));
				}
			}
		}
	}
	int ans=0;
	for(int i=0;i<=65537;i++){
		ans=max(ans,max(f[i]['A'],max(f[i]['I'],max(f[i]['U'],max(f[i]['E'],f[i]['O'])))));
	}
	cout<<ans;
}
//000001000000
//111111111111
2023/3/23 13:20
加载中...