zoukankan      html  css  js  c++  java
  • 2016A06寒假作业 全排列

     又是一个全排列哈,

    注意注意,这个题不是十三个数字都需要,但原理是一样的

    一开始把for的边界写错了(每次其实应该从k开始,还没看出来orz)

    #include <iostream>
    #include <string>
    #include <string.h>
    #include <vector>
    #include <time.h>
    #include <algorithm>
    //全排列,但需要剪枝
    using namespace std;
    int a[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13};
    int ans=0;
    int check(){
        if((a[1]+a[2]==a[3])&&(a[4]-a[5]==a[6])&&(a[7]*a[8]==a[9])&&
        (a[10]%a[11]==0)&&(a[10]/a[11]==a[12]))
            return true;
        return false;
    }
    
    void f(int k){
        if(k==14 ){
            if(check()) {
                ans++;
            }
        }
        for (int i = k; i <= 13; ++i) {
            int t = a[i];
            a[i] = a[k];
            a[k] = t;
            if(k==3&&(a[1]+a[2]!=a[3])){//可以多剪几次枝
                int t = a[i];
                a[i] = a[k];
                a[k] = t;
                continue;
            }
            f(k + 1);
            int q = a[i];
            a[i] = a[k];
            a[k] = q;
        }
    }
    int main(){
        f(1);
        cout<<ans;
    }
  • 相关阅读:
    Resharper Visual studio中的插件
    MVC 中Simditor上传本地图片
    MVC编程模型
    数据库面试题
    SQL、索引
    存储过程详解
    EF的简单认识
    MVC是什么
    AOP面向切面编程
    SQL语句基本
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/13386617.html
Copyright © 2011-2022 走看看