zoukankan      html  css  js  c++  java
  • poj3254 Corn fields

    题目链接:https://vjudge.net/problem/POJ-3254

    题意:m*n矩阵,为1可以放牛,牛可以放任意只,要求没有两只在的格子有相邻的边,求总方案数

    设f[i][j]表示考虑到第i行,列的放置情况为状态s,则f[i][s]=Σf[i-1][s'],直接暴力枚举状态s和s'即可。需要满足状态s和s'都合法(本身所在的行里,牛都放在有1的位置而且不共享相同的边),而且s和s'兼容(s和s'不共享相同的边)

    #include<iostream>
    using namespace std;
    
    const int mod=1e8;
    int a[20][20],f[20][(1<<15)],m,n,i,j,s1,s2;
    
    int main(){
    	cin>>m>>n;
    	for (i=1;i<=m;i++)
    	  for (j=0;j<n;j++) cin>>a[i][j];
    	for (i=1;i<=m;i++)
    	  for (s1=0;s1<(1<<n);s1++){
    	  	int b=0; int c[20]={0};
    	  	for (j=0;j<n;j++) c[j]=(s1>>j)&1;
    	  	for (j=0;j<n;j++) 
    	  	  if ((c[j]&c[j+1])||(c[j]==1&&a[i][j]==0)) b=1;
    	  	if (b) continue;
    		if (s1>0) f[i][s1]=1; 
    		for (s2=0;s2<(1<<n);s2++)
    		  if ((s1&s2)==0) f[i][s1]=(f[i][s1]+f[i-1][s2])%mod;
    	  }
    	int ans=0;
    	for (i=0;i<(1<<n);i++) ans=(ans+f[m][i])%mod;
    	cout<<ans+1<<endl;
    	return 0;
    }
    

      

  • 相关阅读:
    QPS的优化
    面试题
    py-redis
    集群化的部署
    RESTful设计
    python第三方库------jieba库(中文分词)
    csv文件读写处理
    python中的turtle库(图形绘画库)
    html中form表单的使用方法和介绍
    WC2019
  • 原文地址:https://www.cnblogs.com/edmunds/p/13657889.html
Copyright © 2011-2022 走看看