2 条题解
-
0
#include<bits/stdc++.h> using namespace std; int L,n; string S,s[1005],ans[1005]; inline bool check(int st,int id){ for(int i=0;i<s[id].size();i++) if(S[st+i]!='?'&&S[st+i]!=s[id][i]) return 0; return 1; } int main(){ cin>>L>>n; cin>>S; for(int i=1;i<=n;i++) cin>>s[i]; for(int i=1;i<=L;i++){ for(int j=1;j<=n;j++){ if(s[j].size()>i) continue; int st=i-s[j].size(); if(st>0&&ans[st]=="") continue; if(check(st,j)) if(ans[i]==""||ans[i]>ans[st]+s[j]) ans[i]=ans[st]+s[j]; } } cout<< ans[L] <<"\n"; return 0; } -
0
#include<bits/stdc++.h> using namespace std; int L,n; string S,s[1005],ans[1005]; inline bool check(int st,int id){ for(int i=0;i<s[id].size();i++) if(S[st+i]!='?'&&S[st+i]!=s[id][i]) return 0; return 1; } int main(){ cin>>L>>n; cin>>S; for(int i=1;i<=n;i++) cin>>s[i]; for(int i=1;i<=L;i++){ for(int j=1;j<=n;j++){ if(s[j].size()>i) continue; int st=i-s[j].size(); if(st>0&&ans[st]=="") continue; if(check(st,j)) if(ans[i]==""||ans[i]>ans[st]+s[j]) ans[i]=ans[st]+s[j]; } } cout<< ans[L] <<"\n"; return 0; }
- 1
信息
- ID
- 1549
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 31
- 已通过
- 18
- 上传者