枚举库函数搜索:POJ2718--Smallest Difference(解二)
2016-08-16 00:24
447 查看
本题题意是把所给数分为两个非空集合,分别用这两个集合组成两个数,求组成数的最小绝对值。很快我们便能想到next_permutation()这个C++标准库函数。next_permutation(data,data+n)的功能把data[0]到data[n-1]的所有可能情况枚举出来。本题中,我们可以先将所有数字一一枚举,从中挑选出符合条件的分组做处理。原题链接
#include <iostream> #include <algorithm> #include <cstring> using namespace std; int main(){ int n,sum1,sum2,result; int data[10]; cin>>n; while(n--){ char c,s; int k=0; result=0x7f7f7f7f; memset(data,0,sizeof(data)); while(cin>>skipws>>c>>noskipws>>s){ data[k++]=c-'0'; if(s=='\n') break; } sort(data,data+k); while(next_permutation(data,data+k)){ ///枚举数据的各种情况 int i; sum1=sum2=0; if(!data[k/2]&&k>2||!data[0]&&k>3) continue; ///【重要】排除首位数为0的情况 for(i=0;i<k/2;i++) sum1=sum1*10+data[i]; ///计算第一个数 for(;i<k;i++) sum2=sum2*10+data[i]; ///计算第二个数 result=min(result,abs(sum1-sum2)); ///更新结果 } cout<<result<<endl; } return 0; }
相关文章推荐
- 搜狗百度360市值齐跌:搜索引擎们陷入集体焦虑?
- 本人即将筹备败家日志,敬请期待!
- IE:使用搜索助手
- C#编程中枚举类型的使用教程
- 枚举的用法详细总结
- 全面了解结构体、联合体和枚举类型
- C++深度优先搜索的实现方法
- 基于文本的搜索
- php实现搜索一维数组元素并删除二维数组对应元素的方法
- 使用Sphinx对索引进行搜索
- PHP中Enum(枚举)用法实例详解
- c#入门之枚举和结构体使用详解(控制台接收字符串以相反的方向输出)
- 理解C#中的枚举(简明易懂)
- C#枚举中的位运算权限分配浅谈
- asp 多关键词搜索的简单实现方法
- C#使用foreach语句搜索数组元素的方法
- WordPress中用于获取搜索表单的PHP函数使用解析
- JavaScript中数组的排序、乱序和搜索实现代码
- jquery ztree实现树的搜索功能
- 【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)