蓝桥杯 - 带分数 (DFS)
100 能够表示为带分数的形式:100 = 3 + 69258 / 714。
还能够表示为:100 = 82 + 3546 / 197。
注意特征:带分数中,数字1~9分别出现且仅仅出现一次(不包括0)。
类似这种带分数,100 有 11 种表示法。
从标准输入读入一个正整数N (N<1000*1000)
程序输出该数字用数码1~9不反复不遗漏地组成带分数表示的所有种数。
注意:不要求输出每一个表示。仅仅统计有多少表示法!
思路:简单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)的更多相关文章
- 蓝桥杯 带分数 DFS应用
问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...
- java实现第四届蓝桥杯带分数
带分数 题目描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一 ...
- 蓝桥杯 全球变暖(dfs)
标题:全球变暖 [题目描述]你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: 其中"上下左右"四个方向上连在一起的 ...
- POJ 2676 - Sudoku - [蓝桥杯 数独][DFS]
题目链接:http://poj.org/problem?id=2676 Time Limit: 2000MS Memory Limit: 65536K Description Sudoku is a ...
- 蓝桥杯PREV-12(dfs&割点)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T35 题意:中文题诶- 思路:dfs 假设star 和 end之间总路径数目为ans, 那么若经过路径上某点到 ...
- 蓝桥杯---数独(模拟 || dfs)
[编程题](满分33分) "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数 学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6 ...
- 蓝桥杯---剪格子(DFS&BFS)(小总结)
问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ...
- 蓝桥杯之大臣的旅费(两次dfs)
Description 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个 ...
- 蓝桥杯之剪格子(经典dfs)
如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+--+-- ...
随机推荐
- iOS 相似QQ空间表视图下拉头部视图放大效果实现
UITableView 是 UIScrollView 的子类. 所以 UIScrollView 的代理方法.在UITableView 上相同可以得到适用. 既然如此那么我们就行知道.在表格下拉的过程中 ...
- caffe-ssd使用预训练模型做目标检测
首先参考https://www.jianshu.com/p/4eaedaeafcb4 这是一个傻瓜似的目标检测样例,目前还不清楚图片怎么转换,怎么验证,后续继续跟进 模型测试(1)图片数据集上测试 p ...
- 5.文件I/O
1 C标准函数与系统函数的区别 文件的结构体: 1.1 I/O缓冲区 每一个FILE文件流都有一个缓冲区buffer,默认大小8192Byte. 1.2 效率 文件缓冲区会降低效率.这里提供缓冲区主要 ...
- 8. String to Integer[M]字符串转整数
题目 Inplement atoi which converts a string to an integer. The function first discards as many whitesp ...
- asp.net 后台给前台控件添加及设置属性
txtTopImgBox.Attributes.Add("title", "12312121"); Text1.Style["background-c ...
- 利用bat批处理——实现数据库的自动备份和删除
之前见别人一直在玩批处理,最近公司也在用,就顺便学习下: 首先创建一个 txt文件 命名BackupDataBase 并修改后缀为.bat 编写两条命令: sqlcmd -S . -E -Q &qu ...
- Android使用Dribble Api
使用Dribble提供的Api获取上面的设计分享 使用了Material Design.SceneTransitionAnimation 使用了Volley Gson 1. 申请Dribble开发者应 ...
- python字符串、列表、元组
字符串的常用方法: name.count('h')统计h在name中出现的次数 name.find('h')查找h的索引 '?'.join(name)使用问好拼接 name.encode('gb231 ...
- 边框的使用,border-radius,box-shadow,border-image
<html> <head> <meta charset="UTF-8"> <title></ ...
- BZOJ2179: FFT快速傅立叶 FFT实现高精度乘法
Code: #include <cstdio> #include <algorithm> #include <cmath> #include <cstring ...