zoukankan      html  css  js  c++  java
  • 140704

    今天收获还算可以把。。


    今天过了poj1258和poj1753.

    1258是一个红果果的最小生成树,写了个prim,用的邻接矩阵。

    当然邻接表不是很会用,回头会研究图算法,短期内会看的。

    关于prim算法,比较重要的就以下几个点。


    1.选取一个点,然后据此更新其他节点的low[]信息

    2.再执行n-1次操作,每次操作选取木有标记的点中low最小的那个。记得每次增加节点就要更新low数组

    low[i]表示,从i节点到已经生成区域的最短路径。。


    然后,其他的没什么,注意用个vis数组记录标记状态。

    代码如下:poj1258

    #include <stdio.h>
    #define N 300
    #define INF 300000
    int a[N][N];
    int ans;
    int vis[N];
    int low[N];
    int prim(int n)
    {
    	int i,j;
    	int pos;
    	/*
    	 * 更新low数组很重要,之前写了一个,没有更新low
    	 * */
    	for(i=0;i<n;i++)
    	{
    		vis[i]=0;
    	}
    	vis[0] = 1;
    	pos = 0;
    
    	int min;
    	int result=0;  /*我屮艸芔茻,没初始化成0,,查错查了半天*/
    	for(i=1;i<n;i++)
    	{
    		low[i] = a[pos][i];
    	}
    	for(j=1;j<n;j++)
    	{
    		min = INF;
    		for(i=0;i<n;i++)
    		{
    			if(vis[i]==0 && min>low[i])
    			{
    				min = low[i];
    				pos = i;
    			}
    		}
    		vis[pos]=1;/*标记这个新加入的点已经走过*/
    		
    		result+=min;
    	/*	printf("min:%d,%d
    ",min,result);*/
    		/*
    		 * 这是选出了新的节点,下面要更新和这个节点关联的low数组
    		 * */
    		for(i=0;i<n;i++)
    		{
    			if(vis[i]==0 && a[pos][i]<low[i])/*刚开始第一个条件写成了i!=pos,这样会导致之前节点呗更新*/
    				low[i] = a[pos][i];
    		}
    
    	}
    
    
    	return result;
    
    }
    int main()
    {
    	int n;
    	int i,j;
    	while(scanf("%d",&n)!=EOF)
    	{
    		for(i=0;i<n;i++)
    			for(j=0;j<n;j++)
    			{
    				scanf("%d",&a[i][j]);
    			}
    		ans = prim(n);
    		printf("%d
    ",ans);
    
    	}
    	return 0;
    }
    

    解题报告没什么可说的了,解析prim的帖子一抓一把。


    然后是做了poj1753,这题是用一个BFS做的。自己写一个循环队列。

    集训结束了我会写个报告的,暂时留空做个标记在这里~~


    传送门:poj1753。


    然还是,听学长讲了个单调栈。

    poj2559,单调栈(这题今天估计来不及看了!!学长讲的挺好的)

    明后天要做掉。当然尽量把,反正这个思路特别厉害。嗯。好东西。希望有时间去做~


    然后今天鱼头讲了查找和排序。

    关于归并排序,快速排序,堆排序,最近几天要研究研究,,快速排序的话,这个帖子不错:

    http://blog.csdn.net/morewindows/article/details/6684558



    分了小组,,我是个四人小组的组长。。加油加油


  • 相关阅读:
    转载: jQuery事件委托( bind() live() delegate()) [委托 和 绑定的故事]
    转载:CPU的位数和操作系统的位数
    javascript 过滤空格
    转载: js jquery 获取当前页面的url,获取frameset中指定的页面的url(有修改)
    转载:struts标签<s:date>的使用
    转载:s:if的用法
    解决cordova-plugin-actionsheet导致Android丑陋的问题
    ionic框架对Android返回键的处理
    解决魅族手机无法连接Mac调试
    谷歌开发者大会传达的8条关键信息
  • 原文地址:https://www.cnblogs.com/shengrang/p/4067973.html
Copyright © 2011-2022 走看看