输入一个字符串,输出该字符串中字符的所有组合。(腾讯2014笔试附加题)
/*问题:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
分析:由于遵守统计学的原理,故每次输出的个数为2^n-1个,n为输入的字符串长度。这样就可以用二进制表示的方式来求解,
从1到2^n-1中每个数的二进制表示中1的位置即为要输出的字符串中的位置。
*/
#include "StdAfx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void PutAnswer(char *p,int n)
{
int i,j,k,count,d,t;
for(t=1;t<=(pow(2.0,n)-1);t++)
{
j=0,count=0,d=0;
i=t;
int *buf=(int *)malloc(n*sizeof(int));
while(i)
{
if(i%2==1)
{
buf[j]=1;
j++;
count++;
}
else
{
buf[j]=0;
j++;
}
i=i/2;
}
char *put=(char *)malloc((count+1)*sizeof(char));
put[count]=0;
for(k=0;k<n;k++)
{
if(buf[k]==1)
{
put[d]=p[k];
d++;
}
}
printf("%s\r\n",put);
free(buf);
free(put);
}
}
int main ()
{
char *p = "abcdefg";
int len=strlen(p);
PutAnswer(p,len);
p=NULL;
system("pause");
return 0;
}
/*如输入123,输出的为1,2,3,12,13,23,123;
二进制表示 输出
0001 1
0010 2
0011 12(第1和2位的数)下同
0100 3
0101 13
0110 23
0111 123
输入一个字符串,输出该字符串中字符的所有组合。(腾讯2014笔试附加题)相关推荐
- python从键盘上输入一个字符串并输出该字符串_python练习:输入一个字符串,输出该字符串中字符的所有组合...
题目 输入一个字符串,输出该字符串中字符的所有组合.例如abc,它的组合有a.b.c.ab.ac.bc.abc. 第一种思路 使用递归求解,可以考虑长度为n的字符串中m个字符的组合,设为C(n, m) ...
- C# 输入一个三位数的字符串,输出为三位数的整数,并输出百位、十位、和个位
C# 输入一个三位数的字符串,输出为三位数的整数,并输出百位.十位.和个位 以C# 语言编写,控制台应用程序运行 文章目录 C# 输入一个三位数的字符串,输出为三位数的整数,并输出百位.十位.和个位 ...
- 【Java】从键盘中输入一个值,在数组中查找该值的索引并输出
问题: 从键盘中输入一个值,在数组中查找该值的索引并输出 代码: package learnjava;import java.util.Scanner;public class demo13 {pub ...
- c语言中为什么有时候输入一个数字之后要再输入一个才输出结果
c语言中为什么有时候输入一个数字之后要再输入一个才输出结果? 我是一个c语言的初学者,刚学这个的时候就发现这个问题了,我就琢磨为啥,后面发现原来是printf里面\n写习惯了再scanf里面也写了\n ...
- c语言输出整数n的所有素数因子,输入一个正整数 输出它的所有质数因子的c语言程序...
编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. #includevoidmain(){inti,z,x,y,j;printf("pleaseinput ...
- 练习-任意输入n个从小到大的整数的数列,然后输入一个整数插入到数列中,使数列保持从小到大的顺序
第1关:任意输入n个从小到大的整数的数列,然后输入一个整数插入到数列中,使数列保持从小到大的顺序 任务描述 本关任务:任意输入n个从小到大的整数,然后输入一个整数插入到数组中,使数组元素仍然保持从小到 ...
- 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。(自己编程)
建立一个链表,每个结点包括:学号.姓名.性别.年龄.输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去.最近接触到了链表的编程学习,遇到这样的比较基础的编程,程序表现大致分为几个步骤 ...
- 输入一个正整数,统计整数中各位数字值为零的个数,并把该整数中各位上最大的数字值找出和零的个数组成一个新数字输出
/*** 输入一个正整数,统计整数中各位数字值为零的个数,并把该整数中各位上最大的数字值找出和零的个数组成一个新数字输出*/import java.util.Scanner;public class ...
- c语音学习-输入一个字母,输出其对应的ASCII码
输入一个字母,输出其对应的ASCII码 程序流程图: #include<stdio.h> void main() {char ch; prntf("输入一个字i母:\n" ...
- 有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王 猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值
有一个数列:白眉鹰王.金毛狮王.紫衫龙王.青翼蝠王 猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称[顺序查找] 要求: 如果找到了,就提示找到,并给出下标值 如果有多个查找结果,都找出来 ...
最新文章
- 探子报!双十一紧急军情!!!
- 我眼中的Linux设备树(五 根节点)
- ubantu使用apt安装时出现: xxx is not found 的解决方法
- OpenGL之控制渲染图形的移动
- Thread.getContextClassLoader与Thread.getClassLoader()区别
- 1 分钟记住 docker 镜像和容器常用基本命令
- 【POJ3630】Phone List(字典树)
- 《程序员代码面试指南》第一章:栈与队列
- adb刷入第三方recovery_PE Plus类原生系统刷入教程(小白基础篇)
- unity mysql 中文乱码_unity3d链接postgresql,读数据库内容并且显示(读出的中文在编辑器中乱码,发布standalone正常)...
- 詹姆斯等十位大佬的作息时间表曝光
- 官方水晶报表 .NET 应用程序实例下载 (Visual Basic .NET)
- vue之ele中的table组件(复选框的回显和重置)
- Scan的使用方式以及Spring redis的坑
- reverse()和reverse_copy()用法
- 人工智能数学课高等数学线性微积分数学教程笔记(7. 最优化)
- 机动车缉查布控即席分析引擎
- android 自动恢复,Android的状态保存和恢复
- 小师妹学JavaIO之:文件读取那些事
- Java中ReactiveX(RxJava)的使用
热门文章
- 一文读懂《医疗器械定期风险评价报告》撰写要点
- canvas火焰效果
- sqlserver日期减一天_第二人立减1000 | 去厦门吃的地道精彩不重样,没有比这更“惠”吃了!...
- matlab锥圆球体_怎么用matlab绘制球缺与圆锥的组合体
- 理解C语言——从小菜到大神的晋级之路(15)——完结篇:C编程风格
- 先有鸡还有现有的蛋的终极答案
- 将1自动补位为01_自动补位为辅助后游戏就输了一半?那是你不懂辅助的正确打开方式...
- 经管文本分析 | 基于年报文本构建管理层讨论与分析披露的信息含量
- AE开发之主窗体通过Base Comand和IHookHelper接口向子窗体转递图层信息方法模板
- python Django(五)