题目大意:
注释代码:
/*
* Problem ID : POJ 2032 Square Carpets
* Author : Lirx.t.Una
* Language : C++
* Run Time : 0 ms
* Run Memory : 180 KB
*/
#include <iostream>
#include <climits>
#include <cstring>
#include <cstdio>
#include <bitset>
#include <vector>
#define MAXW 10
using namespace std;
bitset<MAXW + 1> g[MAXW + 1];
char dp_w[MAXW + 1][MAXW + 1];
vector<pair<char, char> > cov;
vector<char> to_cov[MAXW + 1][MAXW + 1];
bool vis_cov[MAXW * MAXW];
bool cp_vis_cov[MAXW * MAXW];
int w, h;
int hval;
int bound;
int stp;
inline int
min( int a, int b ) {
return a < b ? a : b;
}
int
h_val(void) {
int i, j, k;
int lft;
memcpy(cp_vis_cov, vis_cov, sizeof(vis_cov));
lft = 0;
for ( i = 1; i <= h; i++ )
for ( j = 1; j <= w; j++ )
if ( g[i][j] ) {
for ( k = 0; k < to_cov[i][j].size(); k++ )
if ( cp_vis_cov[ to_cov[i][j][k] ] )
goto _h_val_CONT_;
lft++;
for ( k = 0; k < to_cov[i][j].size(); k++ )
cp_vis_cov[ to_cov[i][j][k] ] = true;
_h_val_CON