第一次见到这道题目大约是在六年前吧,一道简单的ACM题;自己费半天劲用土方法得出结果,跟别人用堆排序求得结果的时间效率相差数倍,使得笔者第一次深切领略到算法的魅力。六年之后,再一次被人问到这道题,答案瞬间蹦入脑海。
不同的是,当时玩C,现在玩Java和JS,最熟的就是JS了,于是用JS把算法写了出来。欢迎批评指正!...
分类:
Web程序 时间:
2014-06-03 05:04:42
阅读次数:
257
1.从键盘上输入5个数,输出最大的、最小的元素以及他们的下标
#include
int main(void)
{
int i, j, k, max, min;
int a[10] = {0};
printf("input number:");
for(i = 0; i
scanf("%d", &a[i]);
max = min = a[0];
j = k = 0;
...
分类:
编程语言 时间:
2014-06-03 02:43:47
阅读次数:
241
BNUOJ 34981 A Matrix
题目地址:BNUOJ 34981
题意:
给你一个把一个排列放到矩阵里面的算法和矩阵,要你从矩阵写出排列。
如果答案有多个,输出翻转后字典序最大的那个。
分析:
想了半天只能想到链表版的,而且很可能TLE,看了帆神的题解后豁然开朗..Orz..
代码:
/*
* Author: illuz
*...
分类:
其他好文 时间:
2014-06-03 02:15:20
阅读次数:
187
思路:我们先写一个函数,求出从1到整数n之间1出现的次数,而后分别将要求输入的两个数(具体说,应该是最大的数,和最小的数减去1)作为参数传入该函数,得到的值相减,即可得到二者之间的的数中1出现的次数。
最简单的方法,分别求从1到n之间每个数中的1的个数,由于整数n的位数为O(logn),我们要判断一个数有多少个1,需要判断其每一位是否为1,这样一个数就需要判断O(logn)次,而总共有n个数需要求,那么该方法的时间复杂度为O(nlogn)。在九度OJ上用该方法写的代码测试,会超时。
剑指of...
分类:
其他好文 时间:
2014-06-03 01:43:22
阅读次数:
282
上周学校了C基础,除了之前的C基础部分要点的概述外,我在学习中碰到了不少问题,尤其是不能运行和思维逻辑跟不上时最大的苦恼,所以就先写写这篇C语言的常见错误。C语言对于我这种初学者来说,运行报错很常见,可报错之后,又不一定看得懂,因为报错方式是英文。所以,问题一旦出现就要一个一个瞅对错,这样做不仅效率...
分类:
编程语言 时间:
2014-06-02 10:09:12
阅读次数:
282
题意:在给定的数组里,寻找一个最长的序列,满足ai-2+ai-1=ai。并输出这个序列。很容易想到一个DP方程dp[i][j]=max(dp[k][i])+1.
(a[k]+a[i]==a[j],1=dp[1][5]。这样我们只需要在遍历数组的时候维护数组每个数的最大的下标即可。这里使用hash来做...
分类:
其他好文 时间:
2014-06-02 00:39:39
阅读次数:
379
如何与用户沟通
软件开发人员如何与用户进行沟通,才能使用户不会对你的产品反感。就评教系统而言,教师是最大的一个用户,而评教系统所要用到的数据,也需要他们进行录入。所以对于教师来说,他们的工作量是很大的。而这两天再与他们沟通的时候,听到的最多的也就是他们的抱怨了。
如果他们在抱怨“这个软件怎么那么难用,那么麻烦”,身为开发人员,千万不要去内心里咒骂:“你行不行啊,大家都会使,你既然不会!”得...
分类:
其他好文 时间:
2014-06-01 15:49:52
阅读次数:
319
完全二叉树
定义:深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树。
特点:叶子结点只可能在层次最大的两层上出现;对任一结点,若其右分支下子孙的最大层次为l,则其左分支下子孙的最大层次必为l 或l+1
满二叉树:
定义:一棵深度为k,且有2的(k)次方-1个节点的二叉树
特点:每一层上的结点数都是最大结点数
...
分类:
其他好文 时间:
2014-06-01 15:43:44
阅读次数:
206
问题:
对于给定序列1...n,permutations共有 n!个,那么任意给定k,返回第k个permutation。0
分析:
这个问题要是从最小开始直接到k,估计会超时,受10进制转换为二进制的启发,对于排列,比如 1,2,3 是第一个,那么3!= 6,所以第6个就是3,2,1。也就是说,从开始的最小的序列开始,到最大的序列,就是序列个数的阶乘数。那么在1,3 , 2的时候呢?调整一...
分类:
其他好文 时间:
2014-06-01 14:03:55
阅读次数:
257
题目来源:POJ 1679 The Unique MST
题意:判断最小生成树是否唯一 求出次小生成树比较
思路:慢一点的方法就是求出最小生成树 每次去掉最小生成树的一条边再求最小生成树 比较慢
更好的方法是 求出最小生成树后加上一条没有用到的边 然后必定出现一条回路 去掉回路上权值最大的边 做m-(n-1)次
求一次最小生成树 然后n^2的时间预处理最小生成树上两点之间最大的边权 最后...
分类:
其他好文 时间:
2014-06-01 13:53:03
阅读次数:
225