|
沙发
楼主 |
发表于 2018-5-12 23:15:43
|
只看该作者
- #include<iostream>
- using namespace std;
- const int mm=10000;
- int a[mm];
- int head,tail;
- bool b;
- int x,x1,x2,i,j;
- int main()
- {
- a[0]=1;
- head=tail=0;
- b=true;
- while (b && (head<=tail) && (tail<=mm-100))
- {
- x=a[head];
- x1=2*x+1;
- ///找head和tail之间那个数字>=x1
- ///=就不管了 >就将此数字以及后面的数字挪一位,腾个空间给x1
- i=tail;
- while (a[i]>x1) i--; ///隐含一个条件a[head]<x
- if (a[i]<x1)
- {
- for (j=tail; j>=i+1; j--) a[j+1]=a[j]; ///挪出空间
- a[i+1]=x1;tail++; ///进队列
- }
- x2=3*x+2;
- i=tail;
- while (a[i]>x2) i--;
- if (a[i]<x2)
- {
- for (j=tail; j>=i+1; j--) a[j+1]=a[j];
- a[i+1]=x2;tail++;
- }
- head++;
- if (head>=100) b=false; ///只要找到前100项
- }
- if (!b) for (i=0; i<=99; i++ ) cout<<a[i]<<' ';
- }
复制代码 |
|