• hdu 2510 符号三角形


    打表代码:

     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 int firstLine[30]; //第一行的情况,0表示+,1表示- 
     6 int ans[30]; //记录结果 
     7 
     8 int count(int n) { //计算第一行为n的三角形一共有几个符号 
     9     return (n + 1) * n / 2;
    10 }
    11 
    12 void dfs(int n, int m) { //m表示当前遍历到第m个数 
    13     if (n >= m) {
    14         firstLine[m] = 0;
    15         dfs(n, m + 1);
    16         firstLine[m] = 1;
    17         dfs(n, m + 1);
    18         return;
    19     }
    20     
    21     int tmp[30]; //临时记录每一行的情况 
    22     
    23     int sum = 0;
    24     
    25     for (int i = 1; i <= n; i++) {
    26         tmp[i] = firstLine[i];
    27         sum += tmp[i];
    28     }
    29     
    30     for (int i = 2; i <= n; i++) 
    31         for (int j = 1; j <= n - i + 1; j++) {
    32             tmp[j] = tmp[j] ^ tmp[j + 1];
    33             sum += tmp[j];
    34         }
    35         
    36     if (sum == count(n) / 2)
    37         ans[n]++;
    38 }
    39 
    40 
    41 int main() {
    42     memset(ans, 0, sizeof(ans));
    43     for (int i = 1; i <= 24; i++) {
    44         dfs(i, 1);
    45         cout << ans[i] << endl;
    46     }
    47 }

    提交代码:

    1 #include<iostream>
    2 using namespace std;
    3 
    4 int ans[25] = { 0,0,0,4,6,0,0,12,40,0,0,171,410,0,0,1896,5160,0,0,32757,59984,0,0,431095,822229 };
    5 int main() {
    6     int n;
    7     while (cin >> n&&n)
    8         cout << n << " " << ans[n] << endl;
    9 }
  • 相关阅读:
    SQL之CASE WHEN用法详解
    MySQL笔记汇总
    Linux常用命令
    TCP/IP速记
    数据结构和算法速记
    多线程相关概念
    线程安全&Java内存模型
    线程通讯wait&notify
    创建多线程的4种方式
    重写ThreadPoolTaskExecutor
  • 原文地址:https://www.cnblogs.com/NWUACM/p/6596217.html
Copyright © 2020-2023  润新知