zoukankan      html  css  js  c++  java
  • 十二:全排列-求解密码

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

    有某个系统需要密码才可以进入,现已知密码中的字符组合为字符串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 }
  • 相关阅读:
    C语言 · 选择排序
    C语言 · 生物芯片
    C语言 · 猜灯谜
    C语言 · x的x次幂结果为10
    C语言 · LOG大侠
    C语言 · 成绩查询系统
    C语言 · C++中map的用法详解
    C语言 · 方程的解
    斯坦福大学公开课:监督学习应用,梯度下降
    斯坦福大学公开课:机器学习的动机与应用
  • 原文地址:https://www.cnblogs.com/yuming226/p/8146425.html
Copyright © 2011-2022 走看看