标签:style io color os sp for on ef amp
简单题,边界处理注意。可以优化,就不精益求精了。
#include <iostream>
#include <cstring>
#include <vector>
#include <fstream>
using namespace std;
#define MOD 100000000
int field[20];
int DP[20][1200];
int main(){
int N, M;
cin >> N >> M;
memset( field, 0, sizeof( field ) );
for( int n = 0; n < N; ++n ){
for( int m = 0; m < M; ++m ){
int nm;
cin >> nm;
field[n] = ( field[n] << 1 ) | nm;
}
}
const int bits = 1 << M;
vector< int > useful_bits;
for( int b = 0; b < bits; ++b ){
if( !( b & ( b << 1 ) ) ){
useful_bits.push_back( b );
if( !( b & ~field[0] ) ){
DP[0][b] = 1;
}
}
}
for( int n = 1; n < N; ++n ){
for( vector< int >::iterator line_iter = useful_bits.begin();
line_iter != useful_bits.end();
++line_iter ){
if( !( *line_iter & ( ~field[n] ) ) ){
for( vector< int >::iterator pre_line_iter = useful_bits.begin();
pre_line_iter != useful_bits.end();
++pre_line_iter ){
if( !( *pre_line_iter & *line_iter ) &&
!( *pre_line_iter & ( ~field[n - 1] ) ) ){
DP[n][*line_iter] = ( DP[n][*line_iter] + DP[n - 1][*pre_line_iter] ) % MOD;
}
}
}
}
}
int res = 0;
for( int b = 0; b < bits; ++b ){
res = ( res + DP[N - 1][b] ) % MOD;
}
cout << res << endl;
return 0;
}
POJ 3254 Corn Field ( 状态压缩DP )
标签:style io color os sp for on ef amp
原文地址:http://blog.csdn.net/pandora_madara/article/details/41410761