示例#1
0
struct node* next_larger(struct node* current)
{
	struct node* parent = NULL;
	
	if (current == NULL)
		reutrn NULL;
	
	if (current->right != NULL)
		return mininum(current);
	else
		parent = current->parent;
	
	while (current != NULL && current == parent->right)
	{
		current = parent;
		parent = parent->parent;
	}
	
	return parent;
}
void MiniSpanTree_Prim(MGraph &G,VertexType v)
{
	int i,j,k,t;
	closedge close;

	k=LocateVex(G,v);//第一个顶点标记为访问
	for(j=0;j<G.vexnum;j++)
		if(j!=k)
			close[j].lowcost=G.arcs[k][j].adj;
	close[k].lowcost=0;

	for(i=1;i<G.vexnum;i++)
	{
		k=mininum(G,G.vexs[k],close);
		printf("(%d---->%d)\n",close[k].adjvex,G.vexs[k]);
		close[k].lowcost=0;
		for(j=k;j<G.vexnum;j++)//找处当前各个点的最小边
			if(G.arcs[k][j].adj<=close[j].lowcost)
				close[j].lowcost=G.arcs[k][j].adj;
	}
}
示例#3
0
文件: coin.c 项目: neltica/filesort
int main()
{
	int coin_num,chang_money;
	int coin[11];
	int table[11][64001];
	int i,j;
	int temp;
	int min=-1;

	scanf("%d",&coin_num);

	for(i=0;i<coin_num;i++)
	{
		scanf("%d",&coin[i]);
	}
	scanf("%d",&chang_money);


	for(i=0;i<=coin_num;i++)
	{
		table[i][0]=0;
	}

	for(i=0;i<=chang_money;i++)
	{
		table[0][i]=0;
	}


	for(i=1;i<=coin_num;i++)
	{
		for(j=1;j<=chang_money;j++)
		{
			temp=((j/coin[i-1])*coin[i-1]);
			if(temp+((j-temp)*table[i-1][j-temp])==j)
			{
				table[i][j]=mininum((j/coin[i-1])+table[i-1][j-temp],table[i-1][j]);
			}
			else
			{
				table[i][j]=table[i-1][j];
			}
		}
	}
/*
	for(i=0;i<=coin_num;i++)
	{
		for(j=0;j<=chang_money;j++)
		{
			printf("%d ",table[i][j]);
		}
		printf("\n");
	}
	*/

	for(i=0;i<=coin_num;i++)
	{
		printf("%d\n",table[i][chang_money]);
	}

	for(i=1;i<=coin_num;i++)
	{
		if(min!=-1)
		{
			if(table[i][chang_money]<min)
			{
				min=table[i][chang_money];
			}
		}
		else
		{
			if(table[i][chang_money]!=0)
			{
				min=table[i][chang_money];
			}
		}
	}

	if(min!=-1)
	{
		printf("%d",min);
	}
	else
	{
		printf("impossible");
	}


	return 0;
}