算法题目:

求一个全排列函数:

如p([1,2,3])输出:[123],[132],[213],[231],[321],[323].

思路:采用字典序的排序的方法

代码实现:

void swap(char *a,char *b)
{char temp;temp=*a;*a=*b;*b=temp;
}void reverse(char *dic ,int start,int end)
{int i=start,j=end;for(;i<=j;i++,j--)swap(dic[i],dic[j]);
}
void perm (char *dic)
{bool flag;while(){Print(dic);flag = true;int i,l;for(i=size ; i>=1;i--){if(dic[i]>dic[i-1]){flag = false;break;}}if(flag) break;for(l=size;l>i-1;l--){ if(dic[l]>dic[i-1])break;}swap(dic[i-1],dic[l]);reverse(dic,i-1,size-1);}
}

算法设计

求一个组合函数

如p([1,2,3])输出:[1],[2],[3],[1,2],[2,3],[1,3],[1,2,3]

思路:设一个数组a,数组a中的数必须是0和1当中的一个,将待组合数每一个数关联到数组中,接着按照二进制的规则,对数组a构建成的二进制数一步一步加1,在这个过程中,数组a每次构建一个二进制的数,对应数组为1的待组合数集合当中的数立即输出,构成一次组合,依次类推。

void cov(int num,int *a,int size)
{int mark=num;for(int i=size-1;mark!=0;mark/=2,i--){if(mark%2)a[i]=1;elsea[i]=0;}
}void combine1(char *dic, int size)
{int a[size];long int max=2*sizefor(long int i=1;i<=max;i++){for(int j=0;j<size;j++)a[j]=0;cov(i,a,size);for(int j=0;j<size;j++){if(a[j]==1){printf(“%c,”,dic[j]);}}printf(“\n”);}
}

注:以上还可以用字典树实现效率或更高些

转载于:https://www.cnblogs.com/biyeymyhjob/archive/2012/07/13/2589738.html

百度2012校招笔试题之全排列与组合相关推荐

  1. 百度2019校招笔试题

    百度2019校招笔试题 1. 探险安排 小明要为n个人计划一次火星的探险,其中一个重要的任务是为每个参与者安排食物.仓库里面有m个能用一天的食物包裹,每个食物包裹有不同的类型ai.每个人每天必须用且只 ...

  2. 九月十月 阿里 百度 华为 校招笔试题

    九月迅雷,华为,阿里巴巴,最新笔试面试十题 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面 ...

  3. 新浪微博2012校招笔试题

    1.abstract类与其方法,与其实现是否都加abstract. 2.UML各个标志的含义,以及使用了什么设计模式?它的好处有什么. 4.三次握手协议 5.浮点数在内存中的存储方式. 6.线索二叉树 ...

  4. 人人网2012年校招笔试题

    人人网2012年校招笔试题 (职位:Android工程师) 一. Java笔试题·单项选择题 1. Java是从(C)语言改进重新设计 A.Ada B.C++ C. Pascal D. BASIC 2 ...

  5. 小米运维部14年校招笔试题A的个人答案

    15年准备实习生面试时答的题,仅供参考 具体题目详见  http://www.tuicool.com/articles/eYRZBr http://noops.me/?p=1154 一.linux基础 ...

  6. 历年百度校园招聘笔试题

    转载自:http://wenku.baidu.com/view/7bc36e8d6529647d272852ca.html 一:简答题(30) 1:数据库以及线程发生死锁的原理及必要条件,如何避免死锁 ...

  7. 数据分析真题日刷 | 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷

    今日真题 欢聚时代2018校招笔试题-产品经理/数据分析/游戏运营/市场专员 A卷(来源:牛客网) 题型 客观题:单选5道,不定项选择10道 主观题:问答4道 完成时间 90分钟 牛客网评估难度系数 ...

  8. 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...

    原标题:2017美团点评的运维岗校招笔试题,测测你会几题? 1.数据库:以下哪项不是HASH索引的特征? A MySQL不能确定在两个值之间大约有多少行 B 不能使用hash索引来加速ORDER BY ...

  9. 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个

    要求: 这是本人参加美团校招在线考试笔试题,如果此行为违反了美团校招笔试题商业保密性,请与本人联系. 思路:用一个while循环扫描整个字符串,用pStart字符指针指向整个字符串首地址,如果遇到首部 ...

最新文章

  1. Mysql INSERT、REPLACE、UPDATE的区别
  2. 只懂JavaScript也可以开发VR/AR内容了!
  3. UML建模工具EA和Rose比较
  4. DataNumen RAR Repair中文版
  5. html dom 高级,DOM 高级工程师不完全指南
  6. Smarty foreach
  7. linux 关于虚拟内存的几个系统调用
  8. 1.8 为什么是人的表现
  9. 用极限可以求瞬时速度的道理
  10. .NET面试基础知识
  11. python查看微信撤回消息_Python查看微信好友撤回的消息
  12. anaconda r 语言_anaconda 配置R语言
  13. 微云同步盘 linux,微云同步盘pc版下载
  14. android 阅读器字体,Android字体设置及Roboto字体使用方法
  15. windows服务器漏洞修复,Windows7系统漏洞怎么修复?
  16. 【模式匹配】之 —— Z-BOX算法
  17. 嵌入式linux保存参数数据
  18. btwdins.exe
  19. 区块链钱包开发(Android篇)
  20. 美国短信怎么发?美国短信如何计费?

热门文章

  1. linux传奇源码,游戏源码 屠龙传奇H5 鲲乃异兽 全套源码+教程
  2. 网络编程知识预备(4) ——了解应用层的HTTP协议与HTTPS协议
  3. 计算机没有程序,计算机小知识:想尝试写程序却没有电脑?这个在线编辑器满足你...
  4. mysql explain 分析中select_type列解释
  5. 使用DSX-5000 对已安装的电缆进行故障排除
  6. 100个网络基础必备知识 ,值得收藏!
  7. 嵌入式操作系统的主要特点都有哪些
  8. 关于mysql-connector-net在C#中的用法
  9. linux下搭建vsftp锁定根目录,Linux服务搭建之vsftp
  10. 多生产者_你是生产者还是消费者?这决定了你的层次。