程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 5077 NAND(暴力打表)

hdu 5077 NAND(暴力打表)

編輯:C++入門知識

hdu 5077 NAND(暴力打表)


題目鏈接:hdu 5077 NAND

題目大意:Xiaoqiang要寫一個編碼程序,然後根據x1,x2,x3的值構造出8個字符,現在給定要求生成的8個字符,問

說Xiaoqiang最少要寫多少行代碼。代碼內容只能為NAND操作和return操作,操作的變量可以是常數。

解題思路:輸入總共就256中情況,所以暴力剪枝打表,打表的代碼手賤給刪了。。。所以就將一下思路,開一個s數組

表示變量,然後對應每一層每次兩個變量進行NAND操作。

大致三個剪枝,dfs時候,變量出現相同就跳過;8個字符可以直接根據數的位運算計算;單前層出現相同的跳過。

#include 
#include 
#include 

using namespace std;

const int ans[300] = {1, 5, 6, 3, 6, 3, 7, 4, 7, 8, 4, 5, 4, 5, 4, 1, 6, 3, 7, 4, 7, 4, 9, 7, 8, 8, 7, 5, 7, 5, 7, 4, 7, 8, 4, 5, 8, 8, 7, 5, 8, 9, 5, 6, 8, 8, 5, 5, 4, 5, 4, 1, 7, 5, 7, 4, 8, 8, 5, 5, 5, 7, 6, 4, 7, 8, 8, 8, 4, 5, 7, 5, 8, 9, 8, 8, 5, 6, 5, 5, 4, 5, 7, 5, 4, 1, 7, 4, 8, 8, 5, 7, 5, 5, 6, 4, 8, 9, 8, 8, 8, 8, 5, 7, 11, 9, 8, 9, 8, 9, 8, 8, 5, 6, 5, 5, 5, 5, 6, 4, 8, 9, 8, 8, 8, 8, 8, 7, 8, 9, 9, 9, 9, 9, 10, 9, 5, 7, 6, 6, 6, 6, 7, 6, 9, 9, 10, 9, 10, 9, 10, 10, 7, 6, 7, 7, 7, 7, 9, 7, 5, 7, 6, 6, 7, 6, 7, 7, 5, 6, 2, 3, 6, 6, 4, 3, 6, 6, 7, 6, 7, 7, 9, 7, 6, 6, 4, 3, 7, 7, 7, 6, 5, 7, 7, 6, 6, 6, 7, 7, 5, 6, 6, 6, 2, 3, 4, 3, 6, 6, 7, 7, 7, 6, 9, 7, 6, 6, 7, 7, 4, 3, 7, 6, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9, 5, 6, 5, 6, 2, 5, 2, 3, 4, 3, 4, 3, 7, 6, 5, 6, 2, 5, 2, 5, 4, 1};

int main () {
    int cas;
    char p[10];
    scanf("%d", &cas);
    while (cas--) {
        scanf("%s", p);
        int ret = 0;
        for (int i = 0; i < 8; i++)
            ret = ret * 2 + p[i] - '0';
        printf("%d\n", ans[ret]);
    }

    return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved