http://poj.org/problem?id=1011经典搜索dfs

poj:poj.org上做的一些算法题 poj 算法题 在poj.org上做的一些算法题 poj.org 账号:xxfeixiang 题目地址: 例如,第1001题的地址为: 立即下载

自己第一次在linux下用vim 编写的代码,并且A题的,很高兴;

就是poj上面的一个搜索题;题目很是经典,搜索剪枝优化;


#include<cstdio>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int num[65];
bool vis[65];
int Max;
int sum;
bool ok;
int n;
int len;
void dfs(int left,int con,int k,int cnt){
     if(cnt==con){
           if(left==len) ok=true;return;
     }
	int pre=-1;
     for(int i=k;!ok&&i<n;++i){
           if(!vis[i]&&pre!=num[i]&&left>=num[i])
		{
		  pre=num[i];
    		   vis[i]=true;
  		if(left==num[i])
                   dfs(len,con,0,cnt+1);
		else
                   dfs(left-num[i],con,i+1,cnt);
 			vis[i]=false;
                   if(k==0)return;
		}	
     }
}
bool cmp(int x,int y)
{
return x>y;
}
int main()
{

 while(~scanf("%d",&n)&&n){
    Max=-999;
      ok=false;
    sum=0;
   for(int i=0;i<n;i++){
          scanf("%d",&num[i]);
        sum+=num[i];
            vis[i]=false;
 //	if(num[i]>Max)
   //       Max=num[i];
     }
	sort(num,num+n,cmp);
    	for(int i=num[0];i<sum;i++){
		if(sum%i==0)
			{
				memset(vis,false,sizeof(vis));
                      int con=sum/i;
      			len=i;		
		     dfs(i,con,0,0);
				if(ok){
				printf("%d\n",len);
				
					
				//printf("%d\n",len);
					break;
  				}
				}
                    }
   if(!ok)
	printf("%d\n",sum);	
  }
  return 0;
}


http://poj.org/problem;jsessionid=57CE7F39567FF9BFA128CDB4A2E8D728?id=2553 第一道强连通分量题,tarjan算法+缩点,,输出出度为0的顶点。。。 //强连通分量为搜索树中的一颗子树 //stack自定义栈,dfn(u)为结点u的次序编号 //low(u)为u或u的子树能够追溯到的最早的栈中结点的次序号 //belong[u]为u所属连通分量 #include #include #include #include #define N 5005 using namespa 阅读详情

相关推荐

http://poj.org/problem?id=2663

Tri Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13989 Accepted: 6874 Description In how many ways can you tile a 3xn rectangle with 2x1 dominoes? Here is a sample tiling of a 3x12 rectangle. Input Input consists of several test ca

shizuguilai的博客 327

http://poj.org/problem?id=2299 树状数组 《复习》

//求解逆序数对:(后面的数比当前的数小的个数) //例:9 1 0 5 4 //9的逆序数:91 90 95 94 共有4个 //1的逆序数: 10 共有1个 //0的逆序数: 为0个 //5的逆序数:54为1个 //4的逆序数:0个 //所以9 1 0 5 4的逆序数共有6个 #include #include #include #include using namespace std; st

wahaha1_的专栏 621

http://poj.org/problem?id=3468

poj上的题目,意思应该可以看懂。 这就要注意几个问题,1:首先注意数组大小,因为题目明确说明了,因此int 是不够用的,这也是许多人不太注意的地方,导致一直wa,2:就是要注意数据的每次更新,每个根节点都在变,因此sum 也在变,注意每次更新时注意要根节点变 ,sum也要跟着变。3:要注意的就是:在左右节点变化时,注意中间(mind)的取值,(r-l+1)/2; 这是应该注意,我个人认为比较...

一只奔跑的小羊 1088

http://poj.org/problem?id=3083

这算是poj搜索中的水题!这只是在大部分人来讲吧!!对于我这样的菜鸟级的,哎,,还是参考了下别人打代码,才有点思路!其实这题仔细想过之后其实不难。 对于这道题首先我并非一点都不会,只是有一个地方不太会,就是选择方向上,就是左优先,和右优先。主要问题出在还不太会判断具体左右各自优先时,该怎样判断其方向。其实问题在我看过别人的解题思路之后,还是比较简单的。画个正方形,顺时钟就是向右优先,逆时针就是

一只奔跑的小羊 902

http://poj.org/problem?id=3468线段树简单 成段更新 区间求和

这题是昨天的比赛题,昨天比赛完美被大一的虐了,感觉自己真是白活了,一头撞死算了,人家大一的做了5题,而我这个水货这做了两道签到题;明显昨天知道这个题目是线段树,刚开始还想用树状数组试试,后来写完了发现不是插线问点,结果可想而知,代码重写,再看时线段树,然后不会了,自己只会单点更新,以后努力了,没有时间给自己犹豫了;抓紧时间学习数据结构,还有贪心,图论,搜索,还有C++;任重道远; 其中本题的延迟

1849

poj(2431)(优先队列http://poj.org/problem?id=2431)

题目:http://poj.org/problem?id=2431 t

大神养成中..... 1748

2-SAT poj 习题代码记录

3207 -- Ikki's Story IV - Panda's Trick (poj.org)http://poj.org/problem?id=32072-SAT 模板题 #include <algorithm> #include <cstring> #include <cstdio> #include <iostream> #define x first #define y second using namespace std; typede

qq_51490382的博客 273

http://poj.org/problem?id=1007

归并排序。。。。 AC代码: #include&lt;iostream&gt; #include&lt;string.h&gt; #include&lt;string&gt; #include&lt;algorithm&gt; #define N 60 using namespace std; char a[101][N],b[N]; struct str{ int value; int...

feiliboos 228

poj 2823 单调队列 入门 代码附注释

关于单调队列的介绍请移步:http://xuyemin520.is-programmer.com/posts/25964 结合poj2823理解比较好:http://poj.org/problem?id=2823 代码如下(跑得比较慢): #include const int Maxn=1000000+100; int n,k; int id[Maxn],minn[Maxn],ma

wishcxz_acm 787

[poj.org- C++&Java]Bad Hair Day(看牛)

问题: 说明: 牛排成一排,然后全部往右看,高的牛会挡住矮的牛视线,矮的牛会被高的牛看到,求 Σ0 ~ N 被高的牛看到牛匹数。 问题链接:http://poj.org/problem?id=3250 提交记录: http://poj.org/showsource?solution_id=22224843 http://poj.org/showsource?solution_id=22225108 输入案例: 输入: 牛数量:6 牛的高度分别为 10 3 7 4 12 2 被看到的.

qq_28033719的博客 271

POJ:Currency Exchange

原题地址:http://poj.org/problem?id=1860题目翻译:我们的城市有几个货币兑换点。让我们假设每一个点都只能兑换专门的两种货币。可以有几个点,专门从事相同货币兑换。每个点都有自己的汇率,外汇汇率的A到B是B的数量你1A。同时各交换点有一些佣金,你要为你的交换操作的总和。在来源货币中总是收取佣金。 例如,如果你想换100美元到俄罗斯卢布兑换点,那里的汇率是29.75,而佣金是

Demo的博客 623

http://poj.org/problem?id=1062

dijstra+枚举法,,, 题意中文不再说明了,,,,, 解法:求一点到其他所有点的最短路径(还要加上终点的pri[]),在一条路径上点与点之间的等级差不能超过n, 扫描区间因为每条路径都要经过点1,所以依次扫描区间[lev[1]-n,leve[1]]......[lev[1],lev[1]+n] 代码: #include&lt;iostream&gt; #include&lt...

feiliboos 177

http://poj.org/problem?id=3461&&kmp

这一题真是让我纠结,,本以为kmp算法已经掌握很熟练了,木想到tle,,尼玛的什么kmp,然后又看了看书,,发现这竟然和我写的kmp不一样,于是按书重新写了一遍,竟然木有超时,,我表示很受伤啊!! AC代码: #include&lt;iostream&gt; #include&lt;string.h&gt; #include&lt;string&gt; using namespace std;...

feiliboos 171

POJ 1503 Integer Inquiry 【大数加法】

Description One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he explored taking various sums of those numbers.``Th...

weixin_34360651的博客 379

DFS相关专题练习——POJ 1979, POJ3009, C++ 代码实现

POJ 1979:Red and Black http://poj.org/problem?id=1979 一道简单的DFS入门题,主要需要注意的地方就是输入输出的方式:输入是 scanf 按行读入而非按字符读入;输出需要针对多个输入时给出结果,使用while循环来实现。 #include &amp;lt;iostream&amp;gt; #include &amp;lt;cstdio&amp;gt; using name...

Choly_chen的博客 409

http://poj.org/problem?id=1376

题意:一个直径机器人在一个m*n格子的木板上走,按照go或者turn命令走, go是指每秒走1-3米, turn是指转90度,花一秒, 问从起点到终点要花多少秒 知道原来的方向 #include #include using namespace std; int n,m,a[55][55],b[55][55],sx,sy,ex,ey,d[4][2]={{-1,0},{0,1},{1,

chenlang888的专栏 878

解题记录:POJ 1163 The Triangle 问题解析与代码 解法一

1.问题分析 原题链接:http://poj.org/problem?id=1163 本题可以抽象为求最大路径,但这种解法属于较大复杂度的解法,放在后续的解法二中进行讲解。解法一进行进一步简化,从底部向上进行计算,如下图所示: 当从下向上进行考虑时,有公式: 由于每一步都相当于是一次逆向的递归,所以可以保证单步的最大值求解一定是全局的最大值求解。 2.代码 #include ...

Wang_PChao的博客 486

代码超详解】POJ 3304 Segments(简单计算几何 · 思维 + 跨立实验 + 矢量积)

一、传送门 http://poj.org/problem?id=3304 二、算法分析说明与代码编写指导 题目大意:给一组线段(可能完全重合),问是否存在一条直线,当全部的线段向该直线作正投影时,全部的投影都有重叠部分(至少重叠一个点)。 如果所有线段对某直线的正投影都有公共部分,那么过该直线的垂线肯定与所有线段都相交。 那么,将这条直线绕与其中任意一条线段的交点旋转(顺时针或逆时针均可),直到直...

COFACTOR 365
上一篇: hdu 1518 square
下一篇: http://poj.org/problem?id=1988 &&hdu 2818并查集的很好应用
Java_beginer1
博客等级 码龄16年 22粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值