思路:
赢或输或者平的序列;
赢和平的差的绝对值不得超过k;
结束时差的绝对值必须为k;
当“?”时可以自己决定为什么状态;
输出最终序列或者NO;
dp(随便搞搞);
来,上代码:
#include#include #include #include using namespace std;int n,k,dp[1005][2005],m;char ch[1005];int main(){ cin>>n>>k; cin>>ch+1; m=k-1;dp[0][m+1]=true; for(int i=1;i 0;i--) { if(ch[i]=='L') now++; else if(ch[i]=='W') now--; else if(ch[i]=='D') now=now; else { if(dp[i-1][now+1]) now++,ch[i]='L'; else if(dp[i-1][now]) ch[i]='D'; else if(dp[i-1][now-1]) now--,ch[i]='W'; } } cout<