AcWing 1209. 带分数

第一次做,使用全排列
1.先全排列1~9
2.再分别枚举a,b,c
3.最后判断等式是否成立
问题:耗时有点久

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 10;

int n;
int res;
bool st[N];
int path[N];

/*function:求解分割后的数值大小
 *param l:  枚举数值的左边界
 *param r:  枚举数值的右边界
 *return :  枚举的数值
*/
int get(int l, int r)
{
    int m = 0;
    for (int i = l; i <= r; i++) {
        m = m * 10 + path[i];
    }
    return m;
}

/*funcion:  检查等式是否成立
* param a:  数值a
  param b:  数值b
  param c:  数值c
*/
bool check(int a, int b, int c)
{
    if ((n * c - a * c) == b) return true;
    return false;
}

void dfs(int u)
{
    if (u >= N) {   //已经完成全排列,用双重循环将全排列划分为三个数字, 即分别枚举a,b,c三个数值
        for (int i = 1; i <= 7; i++) {
            for (int j = i + 1; j <= 8; j++) {
                int a = get(1, i);     //分别将a b c的数值表示出来
                int b = get(i + 1, j);
                int c = get(j + 1, 9);

                if (check(a, b, c)) res++;  //判断是否符合题目条件
            }
        }
        return;
    }

    for (int i = 1; i < N; i++) {
        if (!st[i]){
            path[u] = i;
            st[i] = true;
            dfs(u + 1);
            st[i] = false;
            path[u] = 0;
        }
    }
}

int main()
{
    cin >> n;

    dfs(1);

    cout << res << endl;

    return 0;

}

 

已标记关键词 清除标记
相关推荐
<p> <b><span style="background-color:#FFE500;">【超实用课程内容】</span></b> </p> <p> <br /> </p> <p> <br /> </p> <p> 本课程内容包含讲解<span>解读Nginx的基础知识,</span><span>解读Nginx的核心知识、带领学员进行</span>高并发环境下的Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><br /> </b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"><span id="__kindeditor_bookmark_start_21__"></span></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a>,播放页面右侧点击课件进行资料打包下载 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页