zoukankan      html  css  js  c++  java
  • hdu 2510 符号三角形

    一道比较特殊的dfs题,同样给定了数据直接打表。

    题目中的+和-的抵销规律可以看做0和1的异或运算,而且还有一个重要的规律,我不会证明那就是-的个数*2=总个数

    还有就是这个回溯,真的是好长。。。。

    打表代码,省去了freopen

    #include <bits/stdc++.h>
    using namespace std;
    int ans[100];
    int a[100][100];
    int sum;
    void dfs(int n)
    {
      if(n>24)
      return;
      else
      {
        for(int i=0;i<=1;i++)
        {
          a[0][n]=i;
          sum+=i;
          for(int j=1;j<n;j++)
          {
            a[j][n-j]=a[j-1][n-j]^a[j-1][n-j+1];
            sum+=a[j][n-j];
          }
          if(sum*2==n*(n+1)/2)
          ans[n]++;
          dfs(n+1);
          sum-=i;
          for(int j=1;j<n;j++)
          {
            a[j][n-j]=a[j-1][n-j]^a[j-1][n-j+1];
            sum-=a[j][n-j];
          }
        }
      }
    }
    int main()
    {
      dfs(1);
      int n;
      while(cin>>n)
      cout<<ans[n]<<endl;
    }
    
  • 相关阅读:
    软件体系结构课后作业03
    Struts2初步认识
    springboot1
    pytorch安装
    classifier of chains
    python错误集锦
    svm-惩罚因子
    毕设笔记1----div样式
    SQLite
    MVC实例应用模式
  • 原文地址:https://www.cnblogs.com/baccano-acmer/p/9846094.html
Copyright © 2011-2022 走看看