C - 高橋くんのバグ探し / AtCoderBeginnerContest#015

abc015.contest.atcoder.jp

#include <iostream>
using namespace std;

int n, k;
int t[5][5];

bool dfs(int query, int value)	{
	if (query == n)	return (!value? true : false);
	for (int j=0; j<k; ++j)	{
		if ( dfs(query+1,t[query][j]^value) )	return true;
	}
	return false;
}

void Solve(void)	{
	for (int i=0; i<n; ++i)
		for (int j=0; j<k; ++j)
			cin >> t[i][j];
	cout << (dfs(0,0)? "Found" : "Nothing") << endl;
}

int main(void)	{
	cin >> n >> k;
	Solve();
	return 0;
}

深さ優先探索で全探索をし、排他的論理和で最終0になった場合はFoundを出力。
全て0にならない場合はNothingを出力。
〜了〜