zoukankan      html  css  js  c++  java
  • Blash数组 c++

     1 //输入一个数作为Blash数组的根,
     2 
     3 //对于该数组的每一个数x,x*2+1 x*3+1均在该数组
     4 //并且该数组没有其他数字
     5 //该数组升序排列
     6 //输入a,n 输出该数组第n个数
     7 //
     8 //
     9 #include <iostream>
    10 #include <algorithm>
    11 void make(int a, int n);
    12 
    13 using namespace std;
    14 int main() {
    15     int a;
    16     int n;
    17     cin>>a>>n;
    18     make(a,n);
    19 
    20     return 0;
    21 }
    22 
    23 void make(int a, int n) {
    24     long long  ans[1000];
    25     ans[1] = a;//数组下标是从1开始的
    26     int rear = 2;//计数器
    27     int two = 1;//设定两个"指针"
    28     int three = 1;
    29     while(rear <= n){
    30         long long t1 = ans[two]*2 + 1;//两个指针分别算出数来
    31         long long t2 = ans[three]*3 + 1;
    32         long long t = min(t1,t2);//找出那个比较小的往答案数组里塞
    33 
    34         if(t1 < t2){
    35             two++;
    36         }
    37         else{
    38             three++;
    39         }
    40         if(t == ans[rear-1])//如果是和上一个答案一样,就continue
    41             continue;
    42         else//如果不一样,那就放进ans数组
    43             ans[rear++] = t;//计数器加一
    44     }
    45     cout<<ans[n];
    46 
    47 }
  • 相关阅读:
    POJ-1700 Crossing River
    C++操作符new-动态存储空间分配
    POJ-3978-Primes
    POJ-1316-Self Numbers
    浅谈二维数组在传参中的使用
    OneToMany与ManyToOne的属性
    jquery的学习
    struts2常用标签
    Struts2.xml中result type属性说明
    监听器Listener
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/12687677.html
Copyright © 2011-2022 走看看