arrows blog

解いた問題などを適当に書いていきます。

全探索

AOJ 0008 Sum of 4 Integers

問題概要 nが与えられる。 a + b + c + d = n を満たすa, b, c, d(a, b, c, dそれぞれの値は、0から9までの範囲の整数に限る)の組み合わせの総数を求めよ。 制約 1 ≤ n ≤ 50 解法 全探索。 a, b, c, dについて、それぞれが0から9のいずれであるかをループで…

SRM670 div2

Easy 問題概要 省略 解法 全探索。 あり得る組み合わせを全て試し、その結果をsetなどにつめていく。 最終的な答えは、setのsizeとなる。 コード class Cdgame { public: int rescount(vector <int> a, vector <int> b) { set<int> st; int sum1 = 0,sum2 = 0; int A = a.si</int></int></int>…

AOJ 1037 Midnight Teatime

問題文, 制約 日本語なので省略 解法 構文解析+全探索まず、入力で与えられる文字列から木を構築する. その木の内部節点にナンバリングする.後は、内部節点の個数分(多くても8個)だけ、'A'を0, 'O'を1, 'X'を2として 全通り(例えば、内部節点が3個なら、000…

SRM 663 div2

Easy 問題文 N × Nのボードにそれぞれ英小文字が書いてある. ある英小文字を好きな英小文字に書き換えることができる.ボードをチェック模様(ある文字を見たとき、上下左右に隣接する文字が全て異なり、ボードを2つの文字で表現することができる) にするため…

SRM 665 div2 Easy Med

Easy 問題文 aが与えられる. a Xor b の計算結果の各桁の数字が全て4or7になり、かつ、a 複数ある場合はどれを出力しても良い. 解法 全探索aとbのXorはC++ならa^bで書ける. コード class LuckyXor { public: bool check(int x){ if(x == 0) return false; wh…

SRM 667 div2 Easy Med

Easy 問題文 省略 解法 全探索 コード class PointDistance { public: int dist(int x1,int y1,int x2,int y2){ return pow(x1-x2,2.)+pow(y1-y2,2.); } vector <int> findPoint(int x1, int y1, int x2, int y2) { for(int x3 = -100 ; x3 <= 100 ; x3++){ for(i</int>…

SRM 656 div2

Easy 問題概要 文字列s('a'~'z'で構成されている)のうちのちょうどk個の文字を任意の'a'~'z'に置き換えたとき、全ての文字が同じになるような文字列を返す。ただし、少なくとも1つは答えが存在し、複数答えがある場合は、そのうちの1つを返す。 制約 1 ≤ |s|…