SRM 358 250pt : BrokenButtons
keyword
BruteForce C++
問題概要
いくつかボタンが壊れたリモコンがある。そのリモコンの壊れてないボタンとinc, decを最低何度押したら目的の値を出せるか求める問題。
解法
探す値が大きくないので全探索する。
#include <vector> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; bool out[0x100]; struct BrokenButtons { int minPresses(int page, vector <int> broken) { int ret = abs(100-page); for(int i=0; i<(int)broken.size(); i++){ out[broken[i] + '0'] = true; } for(int i=0; i<=1000000; i++){ char buf[12]; sprintf(buf, "%d", i); bool ok = true; for(int j=0; buf[j]; j++)if(out[(int)buf[j]]){ ok = false; } if(ok){ ret = min(ret, abs(page - i) + (int)strlen(buf)); } } return ret; } };