青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

經典的狀態壓縮DP。f[i][j]表示第i行,方格排布為二進制數j(第k位上為1表示凸出一個格子,為0表示不凸出)的方案數。用DFS進行狀態轉移。
如果行數比較多的話,可以用矩陣乘法優化。因為每行的狀態轉移都是相同的。設烈數為m,行數為n,可以做到O(23mlogn)。

/*************************************************************************
Author: WHU_GCC
Created Time: 2007-8-28 20:53:12
File Name: pku2411.cpp
Description: 
***********************************************************************
*/

#include 
<iostream>
long long f[12][2048], n, m;
void dfs(int i, int j, int jj, int s)
{
    
if (s == m)
        f[i 
+ 1][jj] += f[i][j];
    
else if ((jj & (1 << s)) == 0)
    
{
        dfs(i, j, jj 
| (1 << s), s + 1);
        
if (s < m - 1 && (jj & (1 << (s + 1))) == 0) dfs(i, j, jj, s + 2);
    }

    
else
        dfs(i, j, jj 
& ~(1 << s), s + 1);
}

int main()
{
    
while (scanf("%d%d"&n, &m), n + m != 0)
    
{
        memset(f, 
0sizeof(f));
        f[
0][0= 1;
        
for (int i = 0; i < n; i++)
            
for (int j = 0; j < (1 << m); j++)
                
if (f[i][j])
                    dfs(i, j, j, 
0);
        printf(
"%I64d\n", f[n][0]);
    }

    
return 0;
}
posted on 2007-08-28 21:03 Felicia 閱讀(1447) 評論(12)  編輯 收藏 引用 所屬分類: 動態規劃
Comments
  • # re: [動態規劃]pku2411
    ACLover
    Posted @ 2007-09-20 12:45
    可不可以講下具體怎么狀態轉移啊,
    太精簡了,看不懂。  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-09-20 18:27
    @ACLover
    呵呵,這么簡單,你一定想的通的  回復  更多評論   
  • # re: [動態規劃]pku2411
    啊水電費
    Posted @ 2007-10-09 23:05
    if (s < m - 1 && (jj & (1 << (s + 1))) == 0) dfs(i, j, jj, s + 2);
    這句話沒有看懂!  回復  更多評論   
  • # re: [動態規劃]pku2411
    啊水電費
    Posted @ 2007-10-09 23:06
    如果前一行狀態對應的位是0,下一行對應位可以取0or1?  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-10-10 08:48
    @啊水電費
    就這兩種狀態轉移,分別對應橫著放和豎著放
    00 -> 00
    0 -> 1  回復  更多評論   
  • # re: [動態規劃]pku2411[未登錄]
    jiushiwo
    Posted @ 2007-10-12 09:11
    #include <iostream>
    long long f[12][2048], n, m;
    void dfs(int i, int j, int jj, int s)
    {
    if (s == m)
    f[i + 1][jj] += f[i][j];
    else if ((jj & (1 << s)) == 0)
    {
    dfs(i, j, jj | (1 << s), s + 1);
    if (s < m - 1 && (jj & (1 << (s + 1))) == 0) dfs(i, j, jj, s + 2);
    }
    else
    dfs(i, j, jj & ~(1 << s), s + 1); //為什么上一層是1,下一層直接置0呢?為什么不考慮置1的情況?
    }
    int main()
    {
    while (scanf("%d%d", &n, &m), n + m != 0)
    {
    memset(f, 0, sizeof(f));
    f[0][0] = 1;
    for (int i = 0; i < n; i++)
    for (int j = 0; j < (1 << m); j++)
    if (f[i][j])
    dfs(i, j, j, 0);
    printf("%I64d\n", f[n][0]);
    }
    return 0;
    }  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-10-12 17:35
    @jiushiwo
    1表示已經放了,不能放了,0表示還能放。  回復  更多評論   
  • # re: [動態規劃]pku2411
    zlone
    Posted @ 2007-11-05 22:51
    如何理解橫放與豎放與不放3種狀態的2進制表示呢
    想了一晚上試了好多方法不見效,奢望指點一二  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-11-06 13:46
    @zlone
    畫個圖想想,不要考慮怎么放,要考慮放后的形狀  回復  更多評論   
  • # re: [動態規劃]pku2411
    loveacm
    Posted @ 2007-12-03 17:08
    小弟愚笨,請問jj代表什么意思  回復  更多評論   
  • # re: [動態規劃]pku2411
    Felicia
    Posted @ 2007-12-03 17:51
    j是初始狀態,jj是目標狀態  回復  更多評論   
  • # re: [動態規劃]pku2411
    loveacm
    Posted @ 2007-12-03 18:15
    謝謝,另外,請問第k位上為1表示凸出一個格子,為0表示不凸出的方案數,這個凸出如何理解?您的1并不表示豎放,0并不表示橫放吧?  回復  更多評論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美喷水视频| 久久精品91| 国产精品美女久久久久久久| 欧美精品一区二区三区四区| 欧美成人免费在线观看| 六十路精品视频| 欧美大片一区二区三区| 欧美激情区在线播放| 欧美日韩国产欧| 国产精品实拍| 在线日韩中文| 99精品久久久| 欧美一区二区在线看| 久久在线免费观看视频| 欧美99在线视频观看| 亚洲啪啪91| 亚洲在线1234| 女人香蕉久久**毛片精品| 欧美色欧美亚洲另类七区| 国产一区二区三区在线播放免费观看 | 免费日韩av| 亚洲韩国日本中文字幕| 亚洲天堂av在线免费| 久久精品三级| 欧美视频在线播放| 激情国产一区二区| 亚洲自拍偷拍福利| 欧美激情在线免费观看| 亚洲视频999| 久久亚洲精品中文字幕冲田杏梨| 欧美国产日韩一区二区| 亚洲精品小视频| 性久久久久久| 欧美日韩一区不卡| **性色生活片久久毛片| 先锋影音久久| 亚洲精选视频免费看| 久久视频一区二区| 国产伦精品一区二区三区免费 | 亚洲一区二区三区成人在线视频精品 | 日韩视频不卡中文| 久久影视精品| 国产一区在线播放| 欧美亚洲一区三区| 亚洲一区二区综合| 国产精品国产成人国产三级| 最近中文字幕mv在线一区二区三区四区| 亚洲一区二区综合| 欧美在线观看视频一区二区三区| 欧美日韩国产色视频| 亚洲黄色一区| 欧美高清你懂得| 久久欧美肥婆一二区| 国产一区二区三区久久| 久久激情婷婷| 久久av一区二区三区| 国产一区二区久久精品| 久久激情婷婷| 久久国产欧美日韩精品| 国产主播一区| 老司机精品视频网站| 久久精品女人| 亚洲人精品午夜在线观看| 亚洲激情校园春色| 欧美区在线播放| 亚洲午夜精品17c| 中文国产亚洲喷潮| 国产欧美日韩亚州综合| 久久久亚洲人| 久久综合色播五月| 亚洲精品乱码久久久久久日本蜜臀 | 国产精品永久在线| 欧美一区二区三区视频| 欧美亚洲综合另类| 今天的高清视频免费播放成人 | 欧美风情在线| 欧美劲爆第一页| 亚洲图片欧洲图片日韩av| 亚洲在线成人| 欧美成人三级在线| 亚洲色图综合久久| 亚洲欧美激情精品一区二区| 国产欧美在线视频| 欧美电影打屁股sp| 欧美日韩亚洲三区| 久久久精彩视频| 久久在线免费观看视频| 亚洲午夜精品视频| 久久成人一区二区| 99国产成+人+综合+亚洲欧美| 一区二区三区高清不卡| 激情欧美日韩| av成人老司机| 影音先锋一区| 一区二区成人精品| 精品白丝av| 一区二区三区精品视频| 激情婷婷亚洲| 一本一本久久| 在线日韩欧美视频| 亚洲欧美日韩成人| 99精品欧美一区二区蜜桃免费| 亚洲制服丝袜在线| 99国产精品一区| 久久久久久欧美| 亚洲无吗在线| 欧美成人免费在线观看| 久久久精品久久久久| 欧美色道久久88综合亚洲精品| 久久久久国产精品一区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 国产精品国码视频| 模特精品在线| 国产亚洲第一区| 99精品视频免费观看| 今天的高清视频免费播放成人| 亚洲视频在线视频| 一本久道久久综合婷婷鲸鱼| 久久精品欧美日韩| 久久精品一二三| 国产欧美午夜| 亚洲免费人成在线视频观看| 亚洲视频免费看| 欧美精品日韩综合在线| 美女视频网站黄色亚洲| 国产亚洲人成a一在线v站| 亚洲午夜精品一区二区| 中文精品视频一区二区在线观看| 噜噜噜91成人网| 欧美成人一区二免费视频软件| 狠狠色丁香婷婷综合| 欧美在线观看www| 久久久久久久999精品视频| 国产精品一区二区三区久久久 | 亚洲国产日韩在线一区模特| 亚洲福利视频网| 美女黄色成人网| 欧美成人精品一区二区| 亚洲国产成人久久综合一区| 亚洲国产欧美久久| 亚洲黄色免费| 欧美国产日韩在线观看| 亚洲国内在线| 一本久久青青| 国产精品久久久久久久免费软件| 亚洲天堂av在线免费| 欧美诱惑福利视频| 国内精品美女av在线播放| 久久国产精品99国产| 欧美激情91| 在线一区二区三区四区五区| 欧美日韩专区在线| 亚洲欧美一区二区三区久久| 久久久久久久999| 亚洲欧洲综合另类| 欧美日韩在线第一页| 亚洲男女自偷自拍图片另类| 久久一区二区三区四区| 亚洲乱码国产乱码精品精天堂 | 亚洲一区区二区| 国产亚洲精品久久久| 久久裸体视频| 99亚洲精品| 久久综合九色99| 99精品视频一区| 国产日韩综合| 欧美二区视频| 小嫩嫩精品导航| 亚洲国语精品自产拍在线观看| 亚洲综合大片69999| 国产香蕉久久精品综合网| 免费久久99精品国产自在现线| 一区二区高清在线| 美女视频一区免费观看| 亚洲一区二区视频| 亚洲福利视频专区| 欧美午夜在线| 蜜桃久久精品乱码一区二区| 亚洲视频在线一区| 亚洲国产精品一区二区久| 欧美在线一级va免费观看| 99视频国产精品免费观看| 国产视频亚洲| 国产精品99免费看 | 久久久久久久欧美精品| av成人国产| 欧美激情亚洲另类| 久久成人久久爱| 亚洲一级片在线看| 亚洲人成精品久久久久| 国产日韩欧美三级| 欧美日韩国产一区二区三区地区| 欧美中文日韩| 亚洲一区二区精品| 日韩视频精品在线| 欧美va天堂| 美女被久久久| 久久久久国产精品人| 欧美一区在线直播| 午夜天堂精品久久久久|