題意:出處
題意:給你乙個n*m的矩形,0表示空著的,1反之,現在兩個人輪流放2*2的矩形,誰不能放了,誰就輸了。
找sg值,可以選擇暴力,也可以利用sg值的特點簡化。
暴力就跟取石子一樣,沒什麼差別,dfs搞定。把矩陣看成乙個字串,字串就是乙個狀態。
其實我們也可以不暴力求sg值,因為只要當前狀態能到達乙個sg值為0的點,當前狀態就是必勝點。
若當前點到達的所有狀態都是必勝的,那麼當前點就是必敗點。所以當我們到達必勝點時,就必須轉換當前狀態繼續遞迴找sg值。
法一、暴力找sg值:
表示還在理解中。。。。n
view code
//i'm lanjiangzhou//c
#include #include
#include
#include
#include
#include
//c++
#include #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
//*************************output*************************
#ifdef win32
#define int64 "%i64d"
#define uint64 "%i64u"
#else
#define int64 "%lld"
#define uint64 "%llu"
#endif
//**************************constant***********************
#define inf 0x3f3f3f3f
//aply for the memory of the stack
//#pragma comment (linker, "/stack:1024000000,1024000000")
//end
intn,m;
const
int maxn =110
;char
s[maxn][maxn];
inta[maxn][maxn];
intmm[maxn][maxn];
int findset(int
mm[maxn][maxn])
}tt[i][j]=tt[i+1][j]=tt[i][j+1]=tt[i+1][j+1]=1
;
if(findset(tt)==0) return1;}}
}return0;
}int
main()
if(findset(a)) printf("
yes\n");
else printf("
no\n");
}return0;
}
C 17 6 lambda擴充套件
自從c 17開始,如果lambda表示式符合要求的話,該表示式會隱式轉換為constexpr表示式。表示式內沒有靜態變數,沒有虛函式,沒有 try catch語句,沒有new delete關鍵字 如下 auto squared auto val 隱式轉換為constexpr表示式,即可以在編譯器求值...
NYOJ 176 整數劃分(二)
整數劃分 二 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述把乙個正整數m分成n個正整數的和,有多少種分法?例 把5分成3個正正數的和,有兩種分法 1 1 3 1 2 2 輸入第一行是乙個整數t表示共有t組測試資料 t 50 每組測試資料都是兩個正整數m,n,其中 1 n m...
DP NYOJ 176 整數劃分 二
整數劃分 二 dp 解決問題 把乙個正整數m分成n個正整數的和,有多少種分法?解決方法 dp i j 代表 m為i,並分成j個正整數的和時的分法。初始化 dp i 1 1。遞推式 dp i j dp i 1 j 1 有1的情況 dp i j j 沒有1的情況 include include incl...