历届试题 带分数  
时间限制:1.0s   内存限制:256.0MB
      
问题描写叙述

100 能够表示为带分数的形式:100 = 3 + 69258 / 714。

还能够表示为:100 = 82 + 3546 / 197。

注意特征:带分数中,数字1~9分别出现且仅仅出现一次(不包括0)。

类似这种带分数,100 有 11 种表示法。

输入格式

从标准输入读入一个正整数N (N<1000*1000)

输出格式

程序输出该数字用数码1~9不反复不遗漏地组成带分数表示的所有种数。

注意:不要求输出每一个表示。仅仅统计有多少表示法!

例子输入1
100
例子输出1
11
例子输入2
105
例子输出2
6

思路:简单DFS,先枚举整数部分,然后再DFS枚举分母就可以



AC代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std; int flag[20], n;
int ans;
int ll;//ll为去掉整数位数而剩下的位数
int v;//v为分数的整数值) int fun(int x) {
int len = 0;
while(x) {
int t = x % 10;
if(flag[t]) return 0;
flag[t] = 1;
x /= 10;
len++;
}
ll = 9 - len;
return 1;
} int judge(int x, int l) {
int len = 0;
int a[20];
memcpy(a, flag, sizeof(flag));
while(x) {
int t = x % 10;
if(a[t]) return 0;
a[t] = 1;
x /= 10;
len ++;
}
int ff = 1;
for(int i = 1; i < 10; i++) {//看数字1到9是否都用到了
if(a[i] == 0) ff = 0;
} if(ff && len == ll - l) return 1;
return 0;
} void dfs(int len, int x) { //len为此时分母所占的位数。x为分母
if(len <= ll / 2) {
if(judge(v * x, len)) //v*x为分子
ans ++;
for(int i = 1; i < 10; i++) {
if(flag[i]) continue;
flag[i] = 1;
dfs(len + 1, x * 10 + i);
flag[i] = 0;
}
}
} int main() {
while(cin >> n) {
ans = 0;
for(int i = 1; i < n; i++) {
memset(flag, 0, sizeof(flag));
if(fun(i)) {
v = n - i;
dfs(0, 0);
}
} cout << ans << endl;
}
return 0;
}

蓝桥杯 - 带分数 (DFS)的更多相关文章

  1. 蓝桥杯 带分数 DFS应用

    问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...

  2. java实现第四届蓝桥杯带分数

    带分数 题目描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一 ...

  3. 蓝桥杯 全球变暖(dfs)

    标题:全球变暖 [题目描述]你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: 其中"上下左右"四个方向上连在一起的 ...

  4. POJ 2676 - Sudoku - [蓝桥杯 数独][DFS]

    题目链接:http://poj.org/problem?id=2676 Time Limit: 2000MS Memory Limit: 65536K Description Sudoku is a ...

  5. 蓝桥杯PREV-12(dfs&割点)

    题目链接:http://lx.lanqiao.cn/problem.page?gpid=T35 题意:中文题诶- 思路:dfs 假设star 和 end之间总路径数目为ans, 那么若经过路径上某点到 ...

  6. 蓝桥杯---数独(模拟 || dfs)

    [编程题](满分33分) "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数 学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6 ...

  7. 蓝桥杯---剪格子(DFS&BFS)(小总结)

    问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ...

  8. 蓝桥杯之大臣的旅费(两次dfs)

    Description 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个 ...

  9. 蓝桥杯之剪格子(经典dfs)

    如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+--+-- ...

随机推荐

  1. MQ发送定时消息

    通过延时发送来发送定时消息. RocketMQ只支持固定精度时间的延时消息发送:1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 若 ...

  2. spark中的广播变量broadcast

    Spark中的Broadcast处理 首先先来看一看broadcast的使用代码: val values = List[Int](1,2,3) val broadcastValues = sparkC ...

  3. 抓包函数-pcap_next

     抓包函数        pcap_next_ex, pcap_next 抓包 #include <pcap/pcap.h> int pcap_next_ex(pcap_t *p, s ...

  4. 关于vue 自定义组件的写法与用法

    最近在网上看到很多大神都有写博客的习惯,坚持写博客不但可以为自己的平时的学习做好记录积累 无意之中也学还能帮助到一些其他的朋友所以今天我也注册一个账号记录一下学习的点滴!当然本人能力实在有限写出的文章 ...

  5. asp.net web site中reference的version的autoupdate

    https://stackoverflow.com/questions/833924/visual-studio-stop-auto-update-on-references This is vali ...

  6. LightOJ--1094-- Farthest Nodes in a Tree(树的直径裸题)

    Farthest Nodes in a Tree Time Limit: 2000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu S ...

  7. [SCOI 2009] 生日快乐

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1024 [算法] 直接DFS,即可 [代码] #include<bits/std ...

  8. 2017-3-6 leetcode 118 169 189

    今天什么都没发生 ================================================= leetcode118 https://leetcode.com/problems ...

  9. 基于Apache CXF的Web Service服务端/客户端

    转自:https://www.aliyun.com/zixun/wenji/1263190.html CXF服务端: package com.sean.server; import javax.jws ...

  10. oracle数据泵备份与还原

    完整的常用的一套oracle备份以及还原方案 --在新库中新建数据目录,我没有特别说明在哪执行的语句都可在plsql中执行 CREATE OR REPLACE DIRECTORY dump_dir A ...