P8599 [蓝桥杯 2013 省 B] 带分数(dfs+全排列+断点判断)

思路:1.深度枚举所有排列情况

2.设置为每个排列设置两个断点,分为三部分:a,b,c

3.转换为乘法判断条件,满足加一

代码如下:(可用next_permutation全排列函数代替dfs)

复制代码
#include<iostream>
#include<stdio.h>
using namespace std;
int ans = 0;

int visit[11] = { 0 };

int arr[11] = { 0 }, k = 0;

int tonum(int l, int r) {//将num数组的第l至r个数转为一个数
	int re = 0;
	for (int i = l; i <r; i++) {
		re = re * 10 + arr[i];
	}
	return re;
}

void dec();

void dfs();

int l = 0;

int main()
{
	
	scanf("%d", &l);
	dfs();
	cout << ans << endl;
	return 0;
}
void dfs()
{
	for (int i = 1; i <= 9; i++)
	{

		if (!visit[i])
		{
			visit[i] = 1;
			arr[k++] = i;
			dfs();
			if (k == 9)		dec();
			k--;
			visit[i] = 0;
		}
	}
}

void dec()
{
	for (int i = 1; i <= 7; i++)
	{	int a = tonum(0, i);
		for (int j = i; j <= 8; j++)
		{
			int b = tonum(i, j);
			int c = tonum(j, 9);
			if ((l - a) * c == b) {
				ans++;
			}
		}
	}
}
相关推荐
mjhcsp4 小时前
透彻背包DP:从DFS暴力搜索到动态规划的逐步推导
算法·深度优先·动态规划
一分之二~6 小时前
二叉树--求最小深度(迭代和递归)
数据结构·c++·算法·leetcode·深度优先
沉默-_-9 小时前
力扣hot100双指针专题解析2(C++)
java·c++·算法·蓝桥杯·双指针
wen__xvn13 小时前
代码随想录算法训练营DAY24第七章 回溯算法part03
算法·深度优先
拼好饭和她皆失14 小时前
《图论算法入门:掌握DFS和BFS,理解图与树的遍历》
深度优先·图论·宽度优先
仰泳的熊猫14 小时前
题目 1429: 蓝桥杯2014年第五届真题-兰顿蚂蚁
数据结构·c++·算法·蓝桥杯
努力学习的小廉15 小时前
我爱学算法之—— 递归
算法·深度优先
不穿格子的程序员1 天前
从零开始写算法——回溯篇4:分割回文串 + N皇后
算法·深度优先·dfs
DashVector1 天前
通义深度搜索-上传文件
人工智能·深度学习·阿里云·ai·深度优先
程序员-King.1 天前
day166—递归—多边形三角剖分的最低得分(LeetCode-1039)
算法·leetcode·深度优先·动态规划·递归