【源码】用1,2,2,3,4,5这六个数字,写一个函数,打印出所有不同的排序,要求:4不能放在第三位,3与5不能相连(C语言实现)

来源:互联网 发布:soap php 编辑:程序博客网 时间:2024/06/04 18:39


帮朋友做的,好像是一个面试题。暴力方式。


#include <stdio.h>#include <stdlib.h>#include <string.h>//判断这个数是不是由1、2、2、3、4、5几位数字组成int func(int n){    int a[5] = {0};    for(int i = 0; i < 6; i++)    {        int bit = n % 10;        n /= 10;        switch(bit)        {        case 1:            a[0]++;            break;        case 2:            a[1]++;            break;        case 3:            a[2]++;            break;        case 4:            a[3]++;            break;        case 5:            a[4]++;            break;        default:            break;        }    }    return a[0] == 1 && a[1] == 2 && a[2] == 1 && a[3] == 1 && a[4] == 1;}//判断第三位是不是4int isNotFour(int n){    int tBit = 0;    for(int i = 0; i < 4; i++)    {        tBit = n % 10;        n /= 10;    }    return tBit != 4;}int main(){    for(int i = 122345; i <= 543221; i++){  if( func(i) ) {             char s[7];            itoa(i, s, 10);if(!strstr(s, "35") && !strstr(s, "53") && isNotFour(i) )            { printf("%d\n", i);} } }     system("pause");    return 0;}


3 0