題意:給你乙個未完成的數獨,每個位置上的價值等於數字乘上位置的價值(類似於打靶子)
要點 1.巧妙利用打表便於搜尋與判斷
2.貪心思想大量減少搜尋的分支:每行(列)選0的個數少的填,減少了分支(不加此剪枝tle一片。。。。。。)
1、剛開始別忘了加上初始的數的value
2、打表注意 0 0 都是 0,(因為打錯表找了半天錯。。。。qaq)
#include#include#include
#include
using
namespace
std;
#define love_nmr 0
int ans=-1
;bool a[10][10
];bool b[10][10
];int
value;
struct
node
}tot[
10];
struct
spds[
105];
intcnt;
int gong[10][10]=,,,
,,,,
,,
};int score[10][10]=,,,
,,,,
,,
};bool c[10][10
];int mp[10][10
];inline
void dfs(int num,int
val)
for(int i=1;i<=9;i++)
}}int
main()
else
}sort(tot+1,tot+10
);
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
if(!mp[tot[i].id][j])
dfs(
1,value);
printf("%d
",ans);
return
love_nmr;
}
P1074 靶形數獨
小城和小華都是熱愛數學的好學生,最近,他們不約而同地迷上了數獨遊戲,好勝的他們想用數獨來一比高低。但普通的數獨對他們來說都過於簡單了,於是他們向 z 博士請教,z 博士拿出了他最近發明的 靶形數獨 作為這兩個孩子比試的題目。靶形數獨的方格同普通數獨一樣,在 999 格寬 999 格高的大九宮格中有 ...
P1074 靶形數獨
p1074 靶形數獨 比賽的要求是 每個人必須完成乙個給定的數獨 每個給定數獨可能有不同的填法 而且要爭取更高的總分數。而這個總分數即每個方格上的分值和完成這個數獨時填在相應格上的數字的乘積的總和 輸入格式 一共 99 行。每行99個整數 每個數都在 0 9的範圍內 表示乙個尚未填滿的數獨方格,未填...
P1074 靶形數獨 題解
原題傳送門 不愧是 2009 noip tg t4 連續打了4天的 吸了口氧才通過。前置知識 對於一道數獨題,我們可以先預處理出每一行0的個數,然後從個數最少的行開始做,這樣可以節省大量的時間 因為這些格仔可以填的數字少 對於本題,我一開始的思路是 仿照前置知識預處理,分數進行打表,存在 poi n...