luogu1074:靶形数度:数迷问题+填数顺序优化

这篇博客介绍了Luogu1074题目的解决方法,这是一个结合了数独和权值优化的数迷问题,称为靶形数独。博主强调了解题的关键在于寻找填数顺序的优化策略,每次从全图中选取未填写数最少的点进行尝试。文章提供了解题思路和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目连接

  • 该题是luogu试炼场的2-9:T4

题目大意

  1. 一个9*9的数独,带权值,求填写数独的基础上,总权值最高;
  2. 要求1:权值是各个格子的值*分数的和;
  3. 各个格子的分数分布,类似一个标靶,所以叫靶形数独;

题目分析

  • 基础的数独问题加上优化;
  • 优化的思想也不难理解:不要盲目地按照行列填写,找点方法!

解题思路

  1. 每次都从全图中找“当前选择最少的点”,然后再尝试填数;
  2. 本题的搜索参数,其实没有太大的用处,所以随便写了个剩余格子,作为dfs()的参数
  3. 最卡时间的应该是每次的全图查找,注意注意注意注意!

上代码

//luogu1074:靶形数独
 
//解题思路:
//还是深搜,但是用了个剪枝的思维
//每次去下一个点前,找出全图“能选最少数”的点,搜它。(剪掉很多)
//思路和手动填数独一样,先找最容易填的! 
//	 (这样将“多搜索次数的点”尽可能往后推,让树干的枝尽可能少) 

#include<bits/stdc++.h>
using namespace std;

int a[20][20];
int h[20][20],l[20][20],g[20][20];
int fh[20],fl[20],n=81,ans=-1;

int f[20][20]={
{0,0,0,0,0,0,0,0,0,0},
{0,6,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值