思路:每一个D(或者R)都会消除下一个离他最近的R(D),以此类推,谁先为0,谁就输,根据这个进行模拟。
#include<bits/stdc++.h>
using namespace std;
char str[200005];
bool visit[200005];
int main()
{
int n,numd=0,numr=0;
scanf("%d%s",&n,str);
for(int i=0;i<n;i++)
{
if(str[i]=='D')
numd++;
else
numr++;
}
int flagd=0,flagr=0;
while(numd&&numr)
{
for(int i=0;i<n;i++)
{
if(str[i]=='D'&&!visit[i])
{
if(!flagr)
flagd++;
else
{
visit[i]=1;
flagr--;
numd--;
}
}
if(str[i]=='R'&&!visit[i])
{
if(!flagd)
flagr++;
else
{
visit[i]=1;
flagd--;
numr--;
}
}
}
}
if(numd) cout<<'D'<<endl;
else cout<<'R'<<endl;
return 0;
}