`
fuerbosi
  • 浏览: 464034 次
文章分类
社区版块
存档分类
最新评论

面试题─用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列

 
阅读更多
用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列,

如:512234、412325等,要求:"4"不能在第三位,"3"与"5"不能相连。

// str: 字符串
// begin: 字符串第一个字符的索引
// end: 字符串最后一个字符的索引
// cnt: 统计全排列的数目,调用之前赋值为0
void string_full_permutation_containing_duplicate_char(char *str, int begin, int end, int &cnt)
{
    if (begin >= end)
    {
        if ( strstr(str, "35") != NULL || strstr(str, "53") != NULL)
            return;
        std::cout << str << std::endl;
        ++cnt;
        return;
    }
    if (begin > 2 && str[2] == '4')
        return;
    
    string_full_permutation_containing_duplicate_char(str, begin+1, end, cnt);
    int i = begin + 1;
    while (i <= end)
    {
        if (str[begin] != str[i])
        {
            std::swap(str[begin], str[i]);
            string_full_permutation_containing_duplicate_char(str, begin+1, end, cnt);
            std::swap(str[begin], str[i]);

            while (str[i] == str[i+1])
                ++i;
        }
        ++i;
    }
}

int main(int argc, char **argv)
{
    char str[] = "122345";
    int len = strlen(str);
    int cnt = 0;
    string_full_permutation_containing_duplicate_char(str, 0, len-1, cnt);
    cout << endl << endl << cnt << endl;
}

算出的cnt=198
分享到:
评论

相关推荐

    c语言面试题----main函数

    c语言面试题----main函数

    自己写的C语言main()函数递归

    刚写完,是一道作业题,想试试主函数递归,所以写了出来,给大家看看,初学C……希望大家指教

    C#最新面试题(127道)word格式

    共享给正在找C#相关面试题的人,一共127道。都背下来一定对你面试有帮助。。。 例如。。。 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问...

    一些C面试题,希望能对大家有帮助

    对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; ...

    c++ 面试题 总结

    C++面试题 1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的。 private 也被集成,只事派生类没有访问权限而已 virtual可加可不加 子类的...

    java面试题大全(2012版)

    2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 83 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 84 4、...

    java面试题

    84.9. 题目1:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连. 117 84.10. 写一个方法,实现字符串的反转,如:输入...

    C语言面试100题(含答案)

    下列给定程序的功能是:读入一个整数k(2=),打印它的所有质因子(即所有素数的因子)。例如,若输入整数2310,则应输出:2、3、5、7、11。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数...

    10个Java经典的Main方法面试题!

    1.main 方法是做什么用的? main 方法是 Java 程序的入口方法,JVM 在运行的时候会首先查找 main 方法。 2.不用 main 方法如何运行一个类? 不行,没有 main 方法我们不能运行 Java 类。 在 Java 7 之前,你可以通过...

    【。net 专业】 面试题

    A)1个 B)3个 C)6个 D)9个 答案:A 问题三:下列哪一个是单词密码? A) KLLN B) LOML C) MLLO D)NMKO 答案:C 8. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动? 答案:62...

    最新名企标准通用C++面试题,

    7、实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。 void DeleteNode(DuNode *p) { p-&gt;prior-&gt;next=p-&gt;next; p-&gt;next-&gt;prior=p-&gt;prior; } void InsertNode(DuNode *p, DuNode *s)//Node "s...

    iOS 面试题

    iOS 面试题 1.关键字 retain 和 release 的 功能 retain 是对oc对象计数器+1 release是对oc对象计数器-1 减到0就自动调用oc对象的dealloc函数 2.请问关键字 alloc 和 init 的 区别 alloc是分配内存,对象...

    程序员面试经典题

    2 将一个 1M 10M 的文件 逆序存储到另一个文件 就是前一个文件的最后一个 字符存到新文件的第一个字符 以此类推 3 main主函数执行完毕后 是否可能会再执行一段代码 (朗讯的一道笔试题) 答案:可以 可以用 ...

    ASP.NET面试题

    3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static ...

    12个有趣的C语言面试题

    12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include&lt;stdio.h&gt; int main(void) { char buff[10]; memset(buff,0,sizeof...

    C++ 面试试题总结

    华为 腾讯 main 函数执行以前,还会执行什么代码? main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?

    java 面试题 总结

    Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...

    java面试宝典2012

    2. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。 90 3、HTML 的 form 提交之前如何验证数值文本框的内容全部为数字? 否则的话提示用户并终止提交? 91 4、...

    C#面试题(127题)

    1. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static ...

Global site tag (gtag.js) - Google Analytics