*大学ACM-ICPC程序设计竞赛五月月赛(同步赛)-B-杨老师游戏

  1. 题目链接:杨老师游戏
  2. 题目分析:将9个数字分成3块,分块枚举,话句话说,9个数字的所有排列组合,如果满足N=a*b-c就是一个答案,暴力枚举Orz.
  3. 代码如下: 
     #include<iostream>
    using namespace std;
    bool flag[];
    int que[];
    int ans, num;
    void check() {
    int Li, Lk, Lj, di, dj, i;
    for (di = ; di < ; ++di) {
    Li = ;
    for (i = ; i <= di; ++i) {
    Li = Li * + que[i];
    }
    for (dj = ; di + dj < ; ++dj) {
    Lj = ;
    for (i = di + ; i <= di + dj; ++i) {
    Lj = Lj * + que[i];
    }
    Lk = ;
    for (i = di + dj + ; i < ; ++i) {
    Lk = Lk * + que[i];
    }
    if (Li * Lj - Lk == num) {
    ++ans;
    }
    }
    }
    }
    void dfs(int number) {
    if (number > ) {
    check();
    }
    int i;
    for (i = ; i < ; ++i) {
    if (!flag[i]) {
    flag[i] = true;
    que[number] = i;
    dfs(number + );
    flag[i] = false;
    }
    }
    }
    int main()
    {
    cin >> num;
    dfs();
    cout << ans << endl;
    return ;
    }
上一篇:BZOJ_2631_tree_LCT


下一篇:【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法