POJ 1020 DFS

来源:互联网 发布:域名申请的步骤包括 编辑:程序博客网 时间:2024/05/24 04:39
#include <iostream>using namespace std;int cakesize;int cakenum[11];int col[40];int number;bool DFS( int fullnumber ){if( fullnumber == number){return true;}int min = 50;int prev;for( int i = 1; i <= cakesize; i++ ){if( col[i] < min ){min = col[i];prev = i;}}for( int size = 10; size >= 1; size-- ){if( !cakenum[size] ){continue;}if( cakesize >= col[prev] + size && prev + size - 1 <= cakesize ){int wide = 0;for( int i = prev; i <= size + prev - 1; i++ ){if( col[i] <= col[prev] ){wide++;continue;}break;}if( wide >= size ){cakenum[size]--;for( int i = prev; i <= size + prev - 1; i++ ){col[i] += size;}if( DFS( fullnumber + 1 ) ){return true;}cakenum[size]++;for( int i = prev; i <= size + prev - 1; i++ ){col[i] -= size;}}}}return false;}int main(){int t, temp;cin >> t;while( t-- ){cin >> cakesize >> number;memset( cakenum, 0, sizeof( cakenum ) );memset( col, 0, sizeof( col ) );for( int i = 1; i <= number; i++ ){cin >> temp;cakenum[temp]++;}if( DFS( 0 ) ){cout << "KHOOOOB!" << endl;}else{cout << "HUTUTU!" << endl;}}return 0;}


 

原创粉丝点击