zoukankan      html  css  js  c++  java
  • 求五位数是奇数的个数

    依然是穷举,这些代码让人怀疑for循环天生就是为穷举而生!
    题:从0~9的10个数字中,选出不重复的五位数,其个位数为奇数的可能为多少?

    /*完整代码*/
    #include <iostream>
    using namespace std;
    int a[5]={1,3,5,7,9};
    int b[5];
    int main()
    {
        int n=0;
        for(int i=0;i<5;i++)/*第5位*/
        {
            b[4]=a[i];
            for(int j=0;j<10;j++)/*第1位*/
            {
                if(j!=0 && j!=b[4])
                {
                    b[0]=j;
                    for(int k=0;k<10;k++)/*第2位*/
                    {
                        if(k!=b[0] && k!=b[4])
                        {
                            b[1]=k;
                            for(int h=0;h<10;h++)/*第3位*/
                                {
                                    if(h!=b[0] && h!=b[1] && h!=b[4])
                                    {
                                        b[2]=h;
                                            for(int g=0;g<10;g++)/*第4位*/
                                            {
                                                if(g!=b[2] && g!=b[4] && g!=b[0] && g!=b[1])
                                                {
                                                    b[3]=g;
                                                    n++;
                                                    for(int v=0;v<5;v++)
                                                    cout<<b[v]<<" ";
                                                    cout<<endl;
                                                }
                                            }
                                    }
                                }
                        }
                    }
                }
            }
        }
         cout<<n<<endl;/*13440种可能*/                        
        return 0;
    }

    第二种解法:递归搜索

    #include <iostream>
    using namespace std;
    #define n 10
    int count=0;/*计数*/
    int a[5];/*存放排列的数组*/
    int flag[10];/*状态数组*/
    int b[10]={0,1,2,3,4,5,6,7,8,9};/*待排数据*/
    void f(int m)
    {
    if(m==5) /*分配完毕*/
    {
        if((a[4]%2)!=0)/*五位数中,末位为奇数*/
        count++;
        if(a[0]==0 && (a[4]%2)!=0)/*减去首位为0的个数*/
        count--;
    }
    else
    for(int i=0;i<10;i++)/*扫描状态数组*/
        if(flag[i]==0)
        {
            a[m]=b[i];
            flag[i]=1;
            f(m+1);
            flag[i]=0;
        }
    }
    int main()
    {
    f(0);
    cout<<count;
    return 0;
    }
  • 相关阅读:
    RMQ的ST算法
    sublime text 3设置
    CodeForces 349B--Color the Fence(贪心)
    HDU 2859—Phalanx(DP)
    一、创建型设计模式
    前端学HTTP之网络基础
    前端工程师技能之photoshop巧用系列第五篇——雪碧图
    javascript基础语法——变量和标识符
    深入学习jQuery动画控制
    你不知道的This和Class
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5335132.html
Copyright © 2011-2022 走看看