博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排列专题(不定期更新)
阅读量:6179 次
发布时间:2019-06-21

本文共 1464 字,大约阅读时间需要 4 分钟。

1、

  题意:给出0~9之间的几个数,从给出的数中组合成两个新的整数(首位不为0),求两个数之间的差的绝对值的最小值。

  思路:由于最多只有10个数,全排列枚举,前n/2个形成一个数,后面的数字形成另一个数。

  

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 int num[12]; 8 int used[12]; 9 int n;10 int main()11 {12 int N;13 cin >> N;14 cin.ignore();15 while (N--)16 {17 char c;18 n= 0;19 memset(used, 0, sizeof(used));20 while (cin.get(c))21 {22 if (c == ' ')continue;23 else if (c == '\n') break;24 else num[n++] = c - '0';25 }26 if (n == 2)//考虑到两个数的特殊情况(错点)27 {28 cout << abs(num[1] - num[0]) << endl;29 continue;30 }31 sort(num, num + n);32 int ans = 1000000000;33 do34 {35 if (num[0] == 0||num[n/2]==0) continue;36 else37 {38 int t1 = 0, t2 = 0;39 for (int i = 0; i < n / 2; i++) t1 = t1 * 10 + num[i];40 for (int i = n / 2; i < n; i++) t2 = t2 * 10 + num[i];41 if (abs(t2 - t1) < ans) ans = abs(t2 - t1);42 }43 } while (next_permutation(num, num + n));44 printf("%d\n",ans);45 }46 return 0;47 }
POJ 2718 Smallest Difference

 

转载于:https://www.cnblogs.com/ivan-count/p/7140721.html

你可能感兴趣的文章
SQL CHECK 约束
查看>>
git提交到一半关闭时
查看>>
WMware 10 Ubuntu 12.04 进入Unity模式
查看>>
简单通用的访问CVS的方法
查看>>
kbengine mmo源码(完整服务端源码+资源+完整客户端源码)
查看>>
【操作系统】实验四 主存空间的分配和回收
查看>>
Log4j 配置 的webAppRootKey参数问题
查看>>
VMware ESXi 5.0中时间配置中NTP设置
查看>>
C++中memset()函数笔记
查看>>
oracle sql 数结构表id降序
查看>>
使用cnpm加速npm
查看>>
MySql跨服务器备份数据库
查看>>
一个字典通过dictionaryWithDictionary 他们的内存指针是不同的
查看>>
HTTP 错误 500.0的解决方法。
查看>>
CCF201612-1 中间数(解法三)(100分)
查看>>
百度前端任务一学习的知识
查看>>
C# 四个字节十六进制数和单精度浮点数之间的相互转化
查看>>
JavaNIO的总结
查看>>
阿里云总监课第五期PPT下载地址
查看>>
时间属性
查看>>