码迷,mamicode.com
首页 > 其他好文 > 详细

BC round 49 A Untitled

时间:2015-08-02 10:14:28      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:

本来是坐了两题的,结果第二题被黑了,两题的时候排名room第三,真是吓到我了,说实话这次真是认真做的,结

还不错虽然只过了一题,貌似没几个人过两题,BC就是这么坑,老是出这么难的题,而且这两次我做的都是递归结出来的,还都是三次递归。。。好多人爆零,我还是一如既往的一道题,好像从来都是一道题。。。继续努力技术分享

认真做题,认真做题,认真做题(重要的事说三遍)

思路:

这道题我没有排序,直接递归的因为层数是递增的,所以可以优先找到层数最少的,每次对小于当前的数取余就ok啦,然后继续递归它的余数,直到为0,这时候应该标记几下,让以后的递归都结束,因为已经找到了满足条件的最少序列。。。

贴代码:

<span style="font-family:Courier New;font-size:18px;">#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<limits.h>
int n,Min,flag;
int b[25];
void dfs(int x,int ans)
{
	if(x == 0)
	{
		flag = 1;
		if(ans < Min)
			Min = ans;
		return ;
	}
	for(int i=0; i<n; i++)
	{
		if(b[i] <= x)
		{
			dfs(x%b[i],ans+1); 
		}
	}
	return ;
}
int main()
{
	int i,T,a;
	scanf("%d",&T);
	while(T--)
	{
		memset(b,0,sizeof(b));
		flag = 0;
		Min = INT_MAX;
		scanf("%d%d",&n,&a);
		for(i=0; i<n; i++)
		{
			scanf("%d",&b[i]);
		}
		dfs(a,0);
		if(flag == 1)
		{
			printf("%d\n",Min);
		}
		else
			printf("-1\n");
	}
	return 0;
}
</span>

版权声明:本文为博主原创文章,未经博主允许不得转载。

BC round 49 A Untitled

标签:

原文地址:http://blog.csdn.net/sinat_22659021/article/details/47204693

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!