poj 2718 Smallest Difference(暴力搜索+STL+DFS)
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 6493 | Accepted: 1771 |
Description
is 0, the integer may not start with the digit 0.
For example, if you are given the digits 0, 1, 2, 4, 6 and 7, you can write the pair of integers 10 and 2467. Of course, there are many ways to form such pairs of integers: 210 and 764, 204 and 176, etc. The absolute value of the difference between the integers
in the last pair is 28, and it turns out that no other pair formed by the rules above can achieve a smaller difference.
Input
The digits will appear in increasing order, separated by exactly one blank space.
Output
Sample Input
- 1
- 0 1 2 4 6 7
Sample Output
- 28
给你 《=10个数,从中可以任意取出几个数,余下的组成另一个数,试问这两个数的最小差是多少
- 有几个注意的地方:1.对于给定的序列,,要让其差最小,那么取出这的两个数位数则需要尽量向相同靠齐
- 2.对于其中的一个序列的模拟,,是可以通过DFS将取出相同数字的所有不同放法遍历到的,所以
- 不需要双重DFS
- 3。对于已经取出的数字,可以直接在循环时就求出其值,不需要再弄个单独的函数,对数组遍历进行求值
- 4.特别要注意的是,,在dfs中一定要用if else if 语句,,否则会在 st==n/2+1之后
- 也就是取出符合条件的数字之后,又一次进入循环内,,所以最后tle了好几次,,就少了个
- else ,,,
- #include <iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<cmath>
- #define inf 0x3f3f3f3f
- using namespace std;
- int a[12],b[12],s[12],minn,v[12],n;
- int dfs(int st,int va) //3
- {
- if(a[1]==0&&st>=2)
- return 0;
- if(st==n/2+1)
- {
- int r=0;
- for(int j=1;j<=n;j++)
- if(!v[j])
- b[++r]=s[j];
- do{
- if(r>=2&&b[1]==0)
- continue;
- int temp=0;
- for(int i=1;i<=r;i++)
- temp=temp*10+b[i];
- if(abs(temp-va)<minn)
- minn=abs(temp-va);
- }while(next_permutation(b+1,b+r+1));
- }
- else //4!!!!!!!!!!!!!!!!!没有这个TL;E了好几次
- for(int i=1;i<=n;i++)
- if(!v[i])
- {
- v[i]=1;
- a[st]=s[i];
- dfs(st+1,va*10+s[i]);
- v[i]=0;
- } //2
- return 0;
- }
- void init()
- {
- memset(s,0,sizeof(s));
- memset(v,0,sizeof(v));
- n=0;
- char m[30];
- gets(m);
- for(int i=0;m[i]!='\0';i++)
- if(m[i]>='0'&&m[i]<='9')
- s[++n]=m[i]-'0';
- }
- int main()
- {
- int cas;
- scanf("%d\n",&cas);
- while(cas--)
- {
- init();
- minn=inf;
- dfs(1,0);
- printf("%d\n",minn);
- }
- return 0;
- }
poj 2718 Smallest Difference(暴力搜索+STL+DFS)的更多相关文章
- POJ 2718 Smallest Difference(最小差)
Smallest Difference(最小差) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 Given a numb ...
- POJ 2718 Smallest Difference dfs枚举两个数差最小
Smallest Difference Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19528 Accepted: 5 ...
- POJ 2718 Smallest Difference(贪心 or next_permutation暴力枚举)
Smallest Difference Description Given a number of distinct decimal digits, you can form one integer ...
- poj 2718 Smallest Difference(穷竭搜索dfs)
Description Given a number of distinct , the integer may not start with the digit . For example, , , ...
- 穷竭搜索: POJ 2718 Smallest Difference
题目:http://poj.org/problem?id=2718 题意: 就是输入N组数据,一组数据为,类似 [1 4 5 6 8 9]这样在0~9之间升序输入的数据,然后从这些数据中切一 ...
- POJ 2718 Smallest Difference【DFS】
题意: 就是说给你一些数,然后要求你使用这些数字组成2个数,然后求他们的差值最小. 思路: 我用的双重DFS做的,速度还比较快,其中有一个很重要的剪枝,若当前搜索的第二个数后面全部补零与第一个数所产生 ...
- POJ 2718 Smallest Difference(dfs,剪枝)
枚举两个排列以及有那些数字,用dfs比较灵活. dfs1是枚举长度短小的那个数字,dfs2会枚举到比较大的数字,然后我们希望低位数字的差尽量大, 后面最优全是0,如果全是0都没有当前ans小的话就剪掉 ...
- POJ 2718 Smallest Difference 枚举
http://poj.org/problem?id=2718 题目大意: 给你一些数字(单个),不会重复出现且从小到大.他们可以组成两个各个位上的数字均不一样的数,如 0, 1, 2, 4, 6 ,7 ...
- POJ - 2718 Smallest Difference(全排列)
题意:将n个数字分成两组,两组分别组成一个数字,问两个数字的最小差值.要求,当组内数字个数多于1个时,组成的数字不允许有前导0.(2<=n<=10,每个数字范围是0~9) 分析: 1.枚举 ...
随机推荐
- MySQL安装及初级增删改查一
学习MYsql 是参照这个维C果糖的总结,学习目录网址:https://blog.csdn.net/qq_35246620/article/details/70823903,谢谢大神的无私分享. 一. ...
- paramiko-ssh实例
import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_k ...
- python-open函数
open函数,该函数用于文件处理 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式 ...
- Web开发Flask框架学习笔记
Python 是一种跨平台的[计算机程序设计语言],是一种面向对象的动态类型语言,Python是纯粹的自由软件,源代码和解释器CPython遵循 GPL(GNU General Public Lice ...
- ModbusRtu通信报文详解【二】
这里接着上一篇内容对ModbusRtu的通信报文做个详细描述: [1]强制单个线圈 功能码:05H [2]预置单个寄存器 功能码:06H [3]强制多个线圈 功能码;0FH [4]预置多个寄存器 功能 ...
- GraphX介绍
转自:https://www.cnblogs.com/txq157/p/5978747.html 1.GraphX介绍 1.1 GraphX应用背景 Spark GraphX是一个分布式图处理框架,它 ...
- iptables实现内外网端口映射及转发上网
前两天在工作中遇到一个需求,某192.168.1.0/24内网网段内只有一台主机A连接到了公网,A的两块网卡分别有一个公网地址(123.234.345.456)和一个内网地址(192.168.1.10 ...
- RHEL7 网口绑定Network Teaming
1.选择Networking Teaming配置方法 使用文本用户界面工具nmtui 使用命令行工具nmcli 使用ifcfg配置文件创建网络成组 使用图形用户界面配置网络成组 2.了解主接口 ...
- 排序算法之快速排序QuickSort
挖坑填数-快速排序 1. left = L,right = R;将基准数挖出形成第一个坑s[left]; 2. right --; 由后向前找比它小的数,找到后挖出此数填前一个坑s[left]中. 3 ...
- Alpha版本第一周小结
姓名 学号 周前计划安排 每周实际工作记录 自我打分(百分制) HTB 061126 1.博客撰写,分配任务 2.编码实现各个模块的功能 1.撰写博客 2.已初步实现各个模块的功能,对某些数据处理还存 ...