zoukankan      html  css  js  c++  java
  • 简单排列习题2.5 的 2

    用1,2,3,...9组成3个3位数abc, def, ghi;每个数字恰好用一次,要求 abc:def :ghi = 1: 2 : 3;按照abc : def : ghi的格式输出。

    通常想到的思路为枚举9个数, 然后再去判断;这样的话最小复杂度为9 * 9 * 9;

    枚举消耗的时间相对来说较大,当枚举的范围过大时,我们可以根据条件减小枚举范围;

    题中给出了一个等式;

    根据这个等式我们可以先枚举出abc的值;

    然后根据abc的值去算出bcd, ghi的值;再来判断;

    这样的复杂度会减小很多

    #include<bits/stdc++.h>

    #define clr(x) memset(x, 0, sizeof(x))

    #define LL long long

    using namespace std;

    const int INF = 0x3f3f3f3f;

    const int maxn = 100005;

    int main()

    {

    int a;

    int vis[15];

    for(int i = 1; i <= 9; i++)

    for(int j = 1; j <= 9; j++)

    for(int k = 1; k <= 9; k++)

    {

    if(i == j || i == k || k == j)

    continue;

    clr(vis);

    int a = i * 100 + j * 10 + k;

    int b = 2 * a;

    int c = 3 * a;

    vis[i] = 1;

    vis[j] = 1;

    vis[k] = 1;

    vis[b % 10] = 1;

    vis[b / 100] = 1;

    vis[(b / 10) % 10] = 1;

    vis[c % 10] = 1;

    vis[c / 100] = 1;

    vis[(c / 10) % 10] = 1;

    int flag = 1;

    for(int l = 1; l <= 9; l++)

    {

    if(!vis[l])

    {

    flag = 0;

    break;

    }

    }

    if(flag)

    {

    printf("%d %d %d ", a, b, c);

    }

    }

    return 0;

    }

  • 相关阅读:
    JDBC
    Ajax:一种不用刷新整个页面便可与服务器通讯的办法
    Maven——自动化构建工具
    SSM整合
    MyBatis框架
    SpringMVC框架、Spring boot框架、SSM區別
    Spring开源框架
    切入点表达式
    面向切面编程之cglib代理方式
    动态JDK代理方式-实现类增强
  • 原文地址:https://www.cnblogs.com/lMonster81/p/6644830.html
Copyright © 2011-2022 走看看