zoukankan      html  css  js  c++  java
  • P1074 靶形数独


    按点排序太他喵玄学了,T两个点过不去,然后换行换列都不行,无奈按行排序,正常的搜索题


    #include<bits/stdc++.h>
    using namespace std;
    int row[10][10],a,ln[10][10],num[10][10],ck[10][10],ans=-1,pt=0,tot,cg[10][10];
    int vt[10][10]=
    {{0,0,0,0,0,0,0,0,0,0},
    {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,10,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}};
    struct node{int i,j;}ab[1000];
    struct nd{int tr,val;}rt[10];
    int cmp(nd x,nd y){return x.val>y.val;}
    void dfs(int pos)
    {
            int i=ab[pos].i,j=ab[pos].j;
            int tk=cg[i][j];
            for(int k=1;k<=9;k++)
            if(!row[i][k]&&!ln[j][k]&&!ck[tk][k])
            {
                row[i][k]=ln[j][k]=ck[tk][k]=1;
                pt+=vt[i][j]*k;
                if(pos==tot) ans=max(ans,pt);
                else dfs(pos+1);
                row[i][k]=ln[j][k]=ck[tk][k]=0;
                pt-=vt[i][j]*k;
            }
    }
    int main()
    {
        for(int i=1;i<=9;i++)
        for(int j=1;j<=9;j++)
        {    cg[i][j]=(i-1)/3*3+(j-1)/3+1;
            cin>>a;
            if(a)
            {
            row[i][a]=1;
            rt[i].val++;
            ln[j][a]=1;
            ck[cg[i][j]][a]=1;
            pt+=vt[i][j]*a;
            num[i][j]=a;
            }
        }
        for(int i=1;i<=9;i++)rt[i].tr=i;
        sort(rt+1,rt+10,cmp); 
        for(int i=1;i<=9;i++)
        {
            int ro=rt[i].tr;
            for(int j=1;j<=9;j++)
            if(!num[ro][j])ab[++tot].i=ro,ab[tot].j=j;
        }
        dfs(1);
        cout<<ans;
    }
  • 相关阅读:
    Entity Framework 6.1
    Entity Framework Code First学习系列
    oracle 监控执行的sql语句
    修改Oracle XE Listener 占用的1521、8080端口
    Oracle中使用Entity Framework 6.x Code-First
    ASP.Net MVC 数据处理
    权限系统
    订单处理减库存的设计
    表达式树,它与表达式、委托
    监听服务管理(转)
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/11503021.html
Copyright © 2011-2022 走看看