C - 高橋くんのバグ探し / AtCoderBeginnerContest#015
#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を出力。
〜了〜