1174 Target Sudoku

Source: Internet
Author: User

1174 Target Sudoku

2009 Noip National League Improvement Group

time limit: 4 sspace limit: 128000 KBtitle level: Diamonds Diamond SolvingTitle Description Description

Small city and Xiao Hua are good students who love maths, recently, they have been fascinated by Sudoku game, competitive he
We want to use Sudoku to a high and low. But the ordinary Sudoku was too simple for them, so they asked Dr. Z for advice,
Dr. Z took out his recently invented "target Sudoku" as a contest for the two children.
The square of the target Sudoku is the same as the ordinary Sudoku, and in the large nine lattice with a width of 9 x9, there are 9 3 squares wide x3 lattice.
The height of the small nine Gongge (separated by a coarse black line). In this large nine lattice, some numbers are known, according to these

Numbers, using logical reasoning, to fill the other blanks with numbers from 1 to 9. Each number in a small nine lattice cannot be
Repeat, each number cannot be repeated in each row or column. But the unique point of the target is different from the ordinary Sudoku, i.e.
Each square has a score, and as with a target, the closer the center is, the higher the score.

The specific score distribution is: the innermost one (yellow area) is 10 points, the yellow area outside the circle (red
Color area) Each grid is 9 points, then the outer circle (blue area) is 8 points each, the blue area outside a circle (brown
Color area) Each grid is 7 points, and the outermost lap (white area) is 6 points each, as shown in. of the game
Requirements are: Each person must complete a given sudoku (each given Sudoku may have a different fill), and to fight for
A higher total number of points. And this total score is the number of points on each square and the numbers that are filled in on the corresponding grid when the Sudoku is completed.
The sum of the product of the. , the total score is 2829 in the following list of target Sudoku games that have been filled with numbers. Swim
Play rules, will be the total number of high and low to decide the outcome.

Because of the need to win, small city found good at programming you, let you help him to find out, for a given target number of Sudoku, can
To get the highest score.

Enter a description Input Description

Altogether 9 lines. 9 integers per line (each of which is in the range of 0-9), representing a sudoku that has not yet been filled
Blank spaces are denoted by "0". Each of the two numbers is separated by a space.

Output description Output Description

The output can be obtained by the highest score of the target Sudoku. If this sudoku is not solved, the output integer-1.

Sample input Sample Input

"Input and output Example 1"

7 0 0 9 0 0 0 0 1
1 0 0 0 0 5 9 0 0
0 0 0 2 0 0 0 8 0
0 0 5 0 2 0 0 0 3
0 0 0 0 0 0 6 4 8
4 1 3 0 0 0 0 0 0
0 0 7 0 0 2 0 9 0
2 0 1 0 6 0 8 0 4
0 8 0 5 0 4 0 1 2

"Input and output Example 2"

0 0 0 7 0 2 4 5 3
9 0 0 0 0 8 0 0 0
7 4 0 0 0 5 0 1 0
1 9 5 0 8 0 0 0 0
0 7 0 0 0 0 0 2 5
0 3 0 5 7 9 1 0 8
0 0 0 6 0 1 0 0 0
0 6 0 9 0 0 0 0 1
0 0 0 0 0 0 0 0 6

Sample output Sample Output

"Input and output Example 1"

2829

"Input and output Example 1"

2852

Data range and Tips Data Size & Hint

"Data Range"
40% of the data, the number of non-0 number of Sudoku is not less than 30.
80% of the data, the number of non-0 number of Sudoku is not less than 26.
100% of the data, the number of non-0 number of Sudoku is not less than 24.

Category labels Tags Click here to expandHeuristic Search search Mainland region Noip National League increase Group 2009 Puzzle : A template for heuristic search AC Code:
#include <cstdio>#include<cstring>#include<iostream>using namespaceStd//I use 1-10, you can use 0-9, the sameintfs[Ten][Ten]={{0,0,0,0,0,0,0,0,0,0},//the title says-score{0,6,6,6,6,6,6,6,6,6},                {0,6,7,7,7,7,7,7,7,6},                {0,6,7,8,8,8,8,8,7,6},                {0,6,7,8,9,9,9,8,7,6},                {0,6,7,8,9,Ten,9,8,7,6},                {0,6,7,8,9,9,9,8,7,6},                {0,6,7,8,8,8,8,8,7,6},                {0,6,7,7,7,7,7,7,7,6},                {0,6,6,6,6,6,6,6,6,6}};intnum[Ten][Ten]={{0,0,0,0,0,0,0,0,0,0},//partition, 9-small nine lattice{0,1,1,1,2,2,2,3,3,3},                 {0,1,1,1,2,2,2,3,3,3},                 {0,1,1,1,2,2,2,3,3,3},                 {0,4,4,4,5,5,5,6,6,6},                 {0,4,4,4,5,5,5,6,6,6},                 {0,4,4,4,5,5,5,6,6,6},                 {0,7,7,7,8,8,8,9,9,9},                 {0,7,7,7,8,8,8,9,9,9},                 {0,7,7,7,8,8,8,9,9,9}};intc[Ten][Ten];//Operations-ArraysBOOLf1[Ten][Ten],f2[Ten][Ten],f3[Ten][Ten];structnode{intx, y;} jl[ the];intAns,maxans;voidDfsintN) {    if(!N) {        if(Maxans<ans) Maxans=ans;//iterate through all the situations that can constitute sudoku, taking the optimal        return ; }    inti=jl[n].x;//start to fill the number    intj=jl[n].y;  for(intk=1; k<=9; k++) {//enumeration of 1-9 of the number of children        if(!f1[i][k]&&!f2[j][k]&&!F3[num[i][j]][k]) {F1[i][k]=1; F2[J][K]=1; F3[NUM[I][J]][K]=1; C[I][J]=K; Ans+=k*Fs[i][j]; DFS (n-1);//SearchANS-=K*FS[I][J];//Backtrackingf1[i][k]=0; F2[J][K]=0; F3[NUM[I][J]][K]=0; }    }}intMain () {intn=0;  for(intI=1; i<=9; i++)         for(intj=1; j<=9; j + +) {scanf ("%d",&C[i][j]); if(C[i][j]) {F1[i][c[i][j]]=1;//mark that the line cannot be filled with c[i][j] equal numbers.f2[j][c[i][j]]=1;//flag that the column cannot be filled with c[i][j] equal numbers.f3[num[i][j]][c[i][j]]=1;//mark the small nine to be no more than the number of c[i][j] equal.ANS+=C[I][J]*FS[I][J];//record an existing score            }            Elsejl[++n].x=i,jl[n].y=j;//record the position and number of ' 0 '} dfs (n);  for(intI=1; i<=9; i++)         for(intj=1; j<=9; j + +)            if(!c[i][j]) {//Obviously, the construction of Sudokuprintf"-1\n");return 0; } printf ("%d\n", Maxans);//Maximum total number of points    return 0;}

1174 Target Sudoku

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.