标签: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