题意: 输入n,m,有一个n * m的字符阵,对于每行和每列,删去相同的字符,最后按顺序输出剩下的字符。
#include<bits/stdc++.h>
#define ll long long
#define pre(i,a,b) for(int i=a;i<=b;i++)
#define rep(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=100005;
const int maxn=1e6+5;
int dp1[110][110],dp2[110][110];
char a[110][110];
int main(){
int n,m;
cin>>n>>m;
pre(i,1,n)
pre(j,1,m)
cin>>a[i][j];//读入数据
pre(i,1,n)
pre(j,1,m)
if(dp1[i][j]!=1)
pre(k,j+1,m)
if(a[i][j]==a[i][k])
dp1[i][j]=dp1[i][k]=1;//标记
pre(i,1,m)
pre(j,1,n)
if(dp2[j][i]!=1)
pre(k,j+1,n)
if(a[j][i]==a[k][i])
dp2[j][i]=dp2[k][i]=1;
pre(i,1,n)
pre(j,1,m)
if(dp1[i][j]!=1&&dp2[i][j]!=1)//判断是否删去
cout<<a[i][j];
return 0;
}