5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

巨大数探索スレッド10

108 :98:2014/08/13(水) 22:02:20.74
>>98のプログラムを改造、バグ取しました。
大きさはどれくらいでしょうか。
よろしくお願いします。
int a=9<<9e9;
int *dup(int *x){if(!x)return x;int i;for(i=0;x[i]!=-1;)i++;int *y=new int[i+1];while(i>=0){y[i]=x[i];i--;}return y;}
bool next(int *x){if(!x)return false;int i;for(i=0;x[i]==0;i++)x[i]=a;if(x[i]==-1)return false;x[i]--;return true;}
int *maxIntA(){int i,*x;x=new int[a+1];for(i=0;i<a;i++)x[i]=a;x[a]=-1;return x;}
struct A{int *t;int *x;A *list;};
struct A S={0,0,0};
A dup(A x){A y;y.t=dup(x.t);y.x=dup(x.x);if(!x.list){y.list=0;return y;}int i;for(i=0;x.list[i].t!=0;)i++;y.list=new A[i+1];while(i>=0){y.list[i]=dup(x.list[i]);i--;}return y;}
A maxA(A x){A y;y.t=maxIntA();y.x=dup(x.x);if(!next(y.x)){y.x=0;y.list=0;return y;}y.list=new A[a+1];int i;for(i=0;i<a;i++)y.list[i]=maxA(y);y.list[a]=S;return y;}
A maxA(){A x;x.t=maxIntA();x.x=maxIntA();x.list=new A[a+1];int i;for(i=0;i<a;i++)x.list[i]=maxA(x);x.list[a]=S;return x;}
bool next(A &x){if(!x.t)return true;if(!x.list)return next(x.t);int i;for(i=0;!next(x.list[i]);i++)x.list[i]=maxA(x);if(!x.list[i].t)return next(x.t);return true;}
void f(A x){a<<=a<<a;if(!next(x))return;A y=maxA();while(next(y)){A z=dup(x);f(z);}}
int main(){A x=maxA();f(x);return a;}

347 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)