int sub_401130()
sub_402702("yes,you get it!");
return 0;
}
bool __thiscall sub_401000(int
this)
else
return result;
}
這是演算法的具體內容,這裡出現的第乙個問題就是 v4的值
char v4[48]; // [sp+0h] [bp-40h]@1
int v5; // [sp+30h] [bp-10h]@1
這裡定義了v4 下面緊跟著定義v5,如果sp作為v4,也就是基位址,v5是v4+30h
v5 = 0x2020908;
v6 = 0x9030106;
第二個問題是this指標
sub_402702(「do you know flag?\n」);
((void (__thiscall )(char ))loc_4010a0)(&v1);
if ( !sub_401000((int)&v1) )
這段**很容易知道v1是輸入資料存放的地方loc_4010a0讀入資料。
其實this是=v1 不過這裡把*this強制轉換成了int型,v4+ascii-30h=v5[a](這裡a表示ascii-30h後的值)
a=[2,0,1,6,1,1,1,1,0]
for i in a:
print(chr(i+48),end=」「)
輸出結果為 201611110
注意 result = v3 == 8;
這裡的v3==8時會result=1否則result還是0!
搜尋 A 演算法和IDA 演算法
a 演算法概述 採用廣度優先搜尋策略,在搜尋過程中使用啟發函式,即有大致方向的向前進雖然目標有時候不是很明確。a 演算法核心 a演算法的關鍵在於啟發函式,啟發函式的優劣直接影響a演算法的效率。f n g n h n 這個式子中 f n 表示從初始狀態到目標狀態的估測代價。g n 表示從初始狀態到當前...
IDA 演算法 騎士精神
騎士精神 description 在乙個5 5的棋盤上有12個白色的騎士和12個黑色的騎士,且有乙個空位。在任何時候乙個騎士都能按照騎士的走法 它可以走到和它橫座標相差為1,縱座標相差為2或者橫座標相差為2,縱座標相差為1的格仔 移動到空位上。給定乙個初始的棋盤,怎樣才能經過移動變成如下目標棋盤 為...
八數碼(IDA 演算法)
八數碼 ida 就是迭代加深和a 估價的結合 在迭代加深的過程中,用估計函式剪枝優化 並以比較優秀的順序進行擴充套件,保證最早搜到最優解 需要空間比較小,有時跑得比a 還要快 include include include include include using namespace std in...