#include <bits/stdc++.h>
using namespace std;
int n,m,s,a[101],f[101][100000],ret,daan2;
string bzc;
map<int,int> mp;
int check(string x)
{
int t=1,sum=0;
for(int i=x.size()-1;i>=0;i--)
sum+=(t*int(x[i]-'0')),t*=2;
return sum;
}
int ss(int x)
{
int temp=x^s,sum=0;
while(temp)
{
sum++;
temp=temp&(temp-1);
}
return sum;
}
void print(int x)
{
int t=0,a[100]={0};
while(x)
{
a[++t]=x%2;
x/=2;
}
if(t<m) for(int i=t+1;i<=m;i++) cout<<0;
for(int i=t;i>=1;i--) cout<<a[i];
cout<<endl;
}
signed main()
{
cin>>m>>n;
cin>>bzc;
s=check(bzc);
for(int i=1;i<=n;i++)
{
string ch;
cin>>ch;
a[i]=check(ch);
mp[a[i]]=1;
}
memset(f,0x7f,sizeof f);
f[0][0]=0;
for(int i=1;i<=n;i++)
for(int j=0;j<(1<<m);j++)
f[i][j]=min(f[i-1][j],f[i-1][j^a[i]]+1);
int cz=0x3f;
for(int i=0;i<(1<<m);i++)
{
int x=ss(i);
if(x<cz||(x==cz&&f[n][i]<ret)) cz=x,ret=f[n][i],daan2=i;
}
cout<<ret-1<<endl;
print(daan2);
if(mp[daan2]) cout<<"Yes";
else cout<<"No";
return 0;
}
有没有dp大佬能帮我一下,谢谢!