十二:全排列-求解密码

问题:全排列-求解密码
题目描述

有某个系统需要密码才可以进入,现已知密码中的字符组合为字符串s中的字符(s<=6,s中的每一个字符都是英文字母,没有数字),但不知其排列顺序,请你编写程序,显示出该字符串中元素的所有组合(注意:会出现重复情况)
如果您采用哈希函数来消除重复,请使用如下公式来计算哈希值:
  result = s[i] + (result << 6) + (result << 16) - result;
result = result & 0x7fffffff;
输入
一个字符串
输出
该字符串的所有组合
样例输入
abcc
样例输出

abcc acbc accb bacc bcac bcca cabc cacb cbac cbca ccab ccba

 1 #include<stdio.h>
 2 #include<string.h>
 3 char str1[1000][10];
 4 int y=0;
 5 void fun(char str[],int k){
 6     int i,j;
 7     char t;
 8     if(k==strlen(str)){
 9         int a=y;
10         int h=0;
11         while(a--&&!strlen(str1[y]))
12             if(!strcmp(str,str1[a])){
13                 h++;
14                 break;
15         }
16         if(!h)
17         printf("%s ",str);
18         strcpy(str1[y++],str);
19     }
20     for(i=k;i<strlen(str);i++){
21         t=str[i];
22         for( j=i-1 ; j>=k ; j-- )
23               str[j+1]=str[j];
24         str[k]=t;
25         fun(str,k+1);
26             t=str[k];
27             for( j=k ; j<=i ; j++)
28                   str[j]=str[j+1];
29             str[i]=t;
30     }
31 }
32 int main(){
33     char str[7];
34     scanf("%s",str);
35     fun(str,0);
36     return 0;
37 }

原文地址:https://www.cnblogs.com/yuming226/p/8146425.html

时间: 2024-10-31 01:30:56

十二:全排列-求解密码的相关文章

电脑密码的十二种破解方法

日常操作中,我们经常要输入各种各样的密码,例如开机时要输入密码,QQ时也要先输入密码,假如你忘记了这些密码,就有可能用不了机器.打不开文件.不能聊天…… 也许还会造成很大的损失!下面我们就介绍电脑操作中常用密码的破解方法,希望能解你燃眉之急! 一.遗忘了SYSTEM密码如果你遗忘了CMOS设置中的SYSTEM密码,就无法启动机器了,解决的办法只能是:打开机箱,把电池取下.正负极短接,给 CMOS 放电,清除CMOS中的所有内容(当然也就包括密码),然后重新开机进行设置.注意:有些主板设置了CMO

十二、usermod命令、用户密码管理、mkpasswd命令

一.usermod命令 usermod:更改用户属性. 格式:usermod -u 111 username:usermod -g 123 username(-g后面可以是组名,也可以是gid) 也可以-d指定家目录,-s指定它的shell -G:扩展组 命令id+用户名:可以查看该用户的uid,gid和组.这个组不仅包含了前面的gid,还可以包括其他的扩展组.一个用户可以属于多个组,但是gid只有一个,我们把除了gid以外的组叫做扩展组. 小实验: # usermod -G grp1 user

微软云计算介绍与实践(实践之十二)

今天主要实践使用远程 SMB 存储共享保存 VHD.由于周末要看球等原因,内容不多,有料就行.(^_^) 接前面,公司私有云管理员小张已经执行了迁移,他还需要在最近已部署的 Virtual Machine Manager 环境中检查虚拟机设置.所以下一步小张需要确认 Guest01 的存储已经位于 HyperV02 上的 SMB 3.0 共享中,并且虚拟机通过 EvalCluster 群集运行. 1.打开 Virtual Machine Management 控制台,输入用户名 CONTOSO\

第十二周(补)

这几周有点心不在焉的,学习状态不好,作业都忘记写了,有的是存在记事本里忘记上传 周次 学习时间 新编写代码行数 博客量(数) 学到知识点 第十二周 6 80 1 html                               <html><head> <title> HTML</title></head><body > <h1>会员注册界面</h1><form action="proces

Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明

紧接上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>,这里专讲OAuth2.0. 理解OAuth2.0 首先我们通过一张图片来了解一下OAuth2.0的运作模式: 从上图我们可以看到,整个过程进行了2次"握手",最终利用授权的AccessToken进行一系列的请求,相关的过程说明如下: A:由客户端向服务器发出验证请求,请求中一般会携带这些参数 ID标识,例如appId 验证后跳转到的URL(redirectUrl) 状态参数

JavaWeb之控制层整理-网上书店(二十二)

后台控制 //过滤器已经实现编码问题 String op = request.getParameter("op"); if("addCategory".equals(op)) { addCategory(request,response); } else if("showAllCategories".equals(op)) { showAllCategories(request,response); } else if("addBook

Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 这一章很多,但是很有趣,也是这书的最后一章知识点了,我现在还在考虑要不要写这个拼图和2048的案例,在此之前,我们先来玩玩Android5.X的新特性吧!

虚拟机VMWare学习笔记十二 - 将物理机抓取成虚拟机

1. 安装VMware vCenter Converter Standalone Client 运行虚拟机,File -- Virtualize a Physical Machine 这时如果电脑中没有VMware vCenter Converter Standalone Client ,则会进行安装. 安装过程 之后图标会出现在桌面上,双击运行 选择连接到本地服务器,登陆 点击转换计算机 这个,可以将本地计算机抓取成虚拟机,也可以将其他可以访问的计算机(需知道管理员用户名及密码)抓取成虚拟机.

进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量.所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来