zoukankan      html  css  js  c++  java
  • 半数集问题-分治

    题目:

    给定一个自然数,可以在其前面增加大小不超过它本身一半的数字,形成的新数字属于半数集,这个数本身也属于半数集

    例如set(6)={6,16,26,126,36,136}

    求n得半数集的元素个数

    思路:

    getset(n)=getset(1)+getset(2)+...+getset(n/2)+1

    将原问题分解成了n/2个小问题,这也是分治法的思想

    上代码:

     1 #include<iostream>
     2 using namespace std;
     3 int getset(int n) {
     4     int ans = 1;//当n不同时,每一个getset(n)都是不同的函数,局部变量ans互相都不关联
     5     if (n > 1) {
     6         for (int i = 1; i <= n / 2; i++) {
     7             ans += getset(i);//将每一步得到的结果加到getset(6)的ans上去
     8         }
     9     }
    10     return ans;
    11 }
    12 int main() {
    13     cout<<getset(6);
    14 
    15     return 0;
    16 }
  • 相关阅读:
    CSS3 --- 盒子
    CSS3 --- 伪元素
    CSS3 --- 伪类结构
    CSS3 --- 选择器
    HTML5 --- 新增表单属性
    HTML5 --- 新增标签
    CSS --- 定位
    CSS---浮动造成的影响
    CSS---盒子模型
    CSS---样式属性
  • 原文地址:https://www.cnblogs.com/program-ai-cv-ml-se-fighting/p/11944463.html
Copyright © 2011-2022 走看看