[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 12/28 00:11 / Filesize : 251 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 20



825 名前:815 すこしなおした バグ取るか、参考として利用してくれ [2007/11/03(土) 15:04:39 ]
#include <iostream>
#define TEN 20
using namespace std;
main(){
int N=TEN*TEN,n,a,b,c;unsigned int A[TEN*TEN/32+1];
//経路生成
for(n=0;n<=N/32;n++)A[n]=0;
for(n=0;n<100;n++){
a=rand()%TEN;b=rand()%TEN;
if(a<b){c=a+TEN*b; A[c/32] |= 1<<(c%32);}}
//経路総数
int keirosu=0;for(n=0;n<N;n++)if( (A[n/32]>>(n%32))&1 )keirosu++;

int *y=new int [keirosu+2], z[TEN], d=0,x,s=keirosu;;
for(n=0;n<TEN;n++)z[n]=-1;for(n=0;n<keirosu+2;n++)y[n]=0;

for(x=0;x<TEN;x++){ z[0]=x;
while(1){ n=y[d];
if(n>=N){
if(d==0)break;
z[d]=-1;d--;x=z[d];
A[n/32]|=1<<(n%32);
s++;y[d]++;continue;}

if( (A[n/32]>>(n%32))&1 ){
a=n%TEN; b=n/TEN;
if(a==x){s--;if(s==0)goto end; x=b; d++; y[d]=0;z[d]=x; A[n/32]&=~(1<<(n%32));continue;}
if(b==x){s--;if(s==0)goto end; x=a; d++; y[d]=0;z[d]=x; A[n/32]&=~(1<<(n%32));continue;}}
y[d]++;}}
end:for(n=0;n<keirosu;n++)cout<<z[n]<<"→";}






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<251KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef