XTUOJ-1252-Matrix Word

  1. 题目

题目描述
一个n×m的矩阵,矩阵每个元素是一个小写英文字母,如果某个字母所在行或者列不是唯一的,那么我们就删掉这个字符。最后,我们按矩阵的从上到下,从左到右,可以得到一个单词。比如,矩阵为
abb
bca
acb
我们可以发现只有第二行的b和a是所在行和列唯一的,所以最后的单词为ba。
输入
存在多个输入样例,每个样例的第一行是两个整数n和m(1≤n,m≤100)。
以后是一个n×m的矩阵,矩阵每个元素一个小写英文字母。
输入数据保证结果不为空。
输出
每行输出一个样例的结果。
样例输入
3 3
aac
bca
abb
5 5
epero
gerea
emeee
meien
egeee
样例输出
cbca
programming

  1. 解法
    这道题数据量并不大,直接暴力就可以AC。我的代码如下。
#include 
#include 
#include 
using namespace std;
char a[101][101];
int n, m;
bool find(char c, int i, int j) {
	//查看行有没有相同的 
	for(int k = 0; k < m; k++) {
		if(k != j && a[i][k] == c) {
			return true;
		}
	}
	//查看列有没有相同的 
	for(int k = 0; k < n; k++) {
		if(k != i && a[k][j] == c) {
			return true;
		}
	}
	return false;
}
int main(int argc, char const **argv) {
	while(cin >> n >> m) {
		getchar();
		for(int i = 0; i < n; i++) {
			for(int j = 0; j < m; j++) {
				scanf("%c", &a[i][j]);
			}
			getchar();
		}
		for(int i = 0; i < n; i++) {
			for(int j = 0; j < m; j++) {
				if(find(a[i][j],i, j)) {
					continue;
				} else {
					printf("%c", a[i][j]);
				}
			}
		}
		cout << endl;
	}
	return 0;
}

你可能感兴趣的:(XTUOJ)