您的位置:首页 > 其它

【构造】URAL 2004 Scientists from Spilkovo

2015-02-12 09:23 344 查看
点击打开链接

求一个最短的串,使得子串能够包括0-(2^n-1)所有的二进制

构造一个欧拉回路

顾森博文:地址

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#include<iomanip>
#include<iostream>
#include<queue>
#include<stack>
using namespace std;
bool sign[1500000];
int n;
string answer;
int main()
{
while(scanf("%d",&n)!=EOF)
{
int temp=(1<<n)-1;
memset(sign,false,sizeof(sign));
answer.clear();
sign[temp]=true;
answer.insert(0,n,'1');
while(temp--)
{
int ans=0;
for(int i=answer.length()-n+1; i<answer.length(); i++)
ans=ans*2+answer[i]-'0';
int ans1=ans*2;
if(!sign[ans1])
{
sign[ans1]=true;
answer+='0';
}
else
{
sign[ans1+1]=true;
answer+='1';
}
}
cout<<answer<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: