前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ZOJ – 1130 Ouroboros Snake

ZOJ – 1130 Ouroboros Snake

作者头像
Yuyy
发布2022-06-28 18:34:24
2220
发布2022-06-28 18:34:24
举报
文章被收录于专栏:yuyy.info技术专栏

本文最后更新于 1170 天前,其中的信息可能已经有所发展或是发生改变。

代码语言:javascript
复制
// ZOJ - 1130 Ouroboros Snake.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


#include <cstdio>  
#include <iostream>  
#include <cstring>  
#include <cmath>  
#include <algorithm>  
#include <string.h>  
#include <string>  

#define eps 1e-8  
#define op operator  
#define MOD  10009  
#define MAXN  100100  
#define INF 0x7fffffff  
#define MEM(a,x)    memset(a,x,sizeof a)  
#define ll __int64  

const int M = (int)(1 << 16);

using namespace std;

int list[M];
int ans[M];
int len;
int m;

void dfs(int v)
{
	int w;
	//    cout<<"vvv  "<<v<<"  list "<<list[v]<<endl;  
	while (list[v]<2)
	{
		w = v * 2 + list[v]; list[v]++;
		//        cout<<"wwww  "<<w<<endl;  
		//        cout<<"w&m  "<<(w&m)<<endl;  
		dfs(w&m);
		//        cout<<"len  "<<len<<"  ww "<<w<<endl;  
		ans[len++] = w;
	}
}

int main()
{
	//freopen("ceshi.txt","r",stdin);  
	int n, k;
	while (scanf("%d%d", &n, &k) != EOF)
	{
		if (n == 0 && k == 0)  break;
		MEM(list, 0);
		len = 0;
		m = (1 << (n - 1)) - 1;
		dfs(0);
		while (k--)
			len--;
		printf("%d\n", ans[--len]);
	}
	return 0;
}

Post Views: 178

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-4-15 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档