最近发的代码都比较水,主要是那些代码比较基础,而且便于讲解,但是也不能总发水的,我也得展现一些实力神马的!
于是今天为大家带来的是离散数学图论欧拉回路的问题,这个讲解就比较麻烦了,所以我就不讲解了。解题代码如下:
#include <iostream>
#include <cstdio>
#include <memory.h>
int main()
{
int n , k;
while ( scanf("%d%d", &n, &k) && (n || k) ){
if ( 1 == n ){
printf("%d\n", k);
continue;
}
char snake[20000];
memset( snake, 0, sizeof(snake) );
int number(0);
int mask((1 << ( n - 1 )) - 1);
int pos(0), node(0);
int i(1), j(mask);
for ( ; i != n; ++i ){
snake[j] = 1;
j = ( j << 1 )&mask;
}
while (true){
if ( node == mask){
number = ( node << 1 ) + 1;
break;
}
number = ( node << 1 );
if (snake[node])
++number;
snake[node] = (!snake[node]);
node = number&mask;
if ( pos ==k )
break;
++pos;
}
while ( pos != k ){
number = ( number&mask ) << 1;
++pos;
}
printf("%d\n", number);
}
return 0;
}