現在我們需要解決的是乙個更簡單的數謎問題。簡單數謎的形狀是乙個(n+
1)(n+1)
(n+1
)行乘(m+
1)(m+1)
(m+1
)列的矩形。而簡單數謎也只有兩種要求,就是行要求和列要求,且分別處於第一行和第一列,其他格仔則是空格,而左上角是忽略不計的
給一些簡單數謎填好了其中的一些空格。現在要完成這些簡單數謎
如圖3
33所示,2
22和9
99是已經填好的空格,圖4
44則是乙個基於圖3
33的乙個可能的解答
很明顯的乙個搜尋
做好預處理,關於每行每列填過的數字。在每個空格處填上乙個該列該行都沒填過的數,並更新當前列和行的總和
若大於行或列的要求,則不需要往下遞迴
#includeusing namespace std;
int t;
int n,m,cs,end;
int col[11],lin[11],a[11][11],colw[11],linw[11],cola[11][11],lina[11][11],ans[11][11];
bool check()
void dfs(int lev)
return;
} int x=lev/m+1,y=lev%m;
if(y==0) y=m,x--;
if(x>1&&y==1)
if(a[x][y]>0) dfs(lev+1);
else
for(int i=1;i<=9;i++)
} }}
int main()
}dfs(1);
if(cs==0) printf("no answer.\n");
else if(cs==1)
for(int i=1;i<=n;i++)
else if(cs==2)
printf("not unique.\n");
}}
簡單數字dp
題目鏈結 題意 n,m 中不包含4和62的數的個數 include include include include using namespace std int dp 10 10 dp i j 表示最高位數字為i,長度為j的的數字串中滿足無4,無62的串的總數 void init 求得小於n的串中...
Acdream Xor 簡單數學
給定乙個集合a,乙個集合b,a,b元素個數相等,然後問是否存在乙個數x使得a中的元素均與這個數進行按位異或操作後的結果為b集合,如果存在輸出最小的數,不存在輸出 1。思路 由於給定的n為奇數,所以能夠根據二進位制位的最右邊位確定唯一的分組,然後只需要判定這個分組是否合理即可。分組是這樣劃分的,如有a...
簡單數學函式
簡單數學函式 1 題目描述 已知函式f x x2 2 2x根據輸入的x值計算f x 運算結果不超過int範圍,x 0 輸入輸入多組測試資料,每組一行為x值 輸出每個測試輸出資料一行 x int input 輸入x if x 0 y x 2 2 2 x print y 題目描述 已知函式,輸入a b的...