【USACO 2017 US Open Silver】Bovine Genomics
题解:
暴力
把ACGT对应成数字,然后记录
接着就是暴力找三个位置
然后又是暴力判断
综上所述:
暴力
#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,k,w,ans;
int a[1005][55],num[5][5][5];
bool bj;
char s[55];
int change(char c)
{
if (c=='A') return 1;
if (c=='T') return 2;
if (c=='G') return 3;
if (c=='C') return 4;
}
int main()
{
scanf("%d%d",&n,&m);
for (i=1;i<=2*n;i++)
{
scanf("%s",s+1);
for (j=1;j<=m;j++)
a[i][j]=change(s[j]);
}
for (i=1;i<=m-2;i++)
for (j=i+1;j<=m-1;j++)
for (k=j+1;k<=m;k++)
{
bj=true;
memset(num,0,sizeof(num));
for (w=1;w<=n;w++)
num[a[w][i]][a[w][j]][a[w][k]]=1;
for (w=n+1;w<=2*n;w++)
if (num[a[w][i]][a[w][j]][a[w][k]]==1)
{
bj=false;
break;
}
if (bj==true) ans++;
}
printf("%d\n",ans);
return 0;
}