摘要:
Java的Swing默认不是线程安全的,类的调度应该由线程分派器来安排。如果每个类都各个各的调度,有可能造成线程紊乱,带来一些难以检测的错误。 对于编写实验性代码(每次都只有一个JFrame),如果每次都要编写重复的main函数,显然太浪费精力。利用Java的反射机制,可以编写一个通用的“... 阅读全文
摘要:
背包是一种不支持从中删除元素的数据集合。它的目的是帮助用例收集元素并迭代遍历所有收集到的元素。迭代遍历的顺序没有要求(实现代码中是后进先出)。使用链表以及泛型机制来实现可以达到最优设计目标: (1)可以处理任意类型的数据; (2)所需的空间总是和集合的大小成正比; (3)操作所需的时间总是和集... 阅读全文
摘要:
队列是一种基于先进先出策略的数据集合。使用链表以及泛型机制来实现可以达到最优设计目标: (1)可以处理任意类型的数据; (2)所需的空间总是和集合的大小成正比; (3)操作所需的时间总是和集合的大小无关。 1 import java.util.Scanner; 2 import java.ut... 阅读全文
摘要:
栈是一种基于后进先出的数据集合。用链表实现比数组实现更加高效。使用链表以及泛型机制来实现可以达到最优设计目标: (1)可以处理任意类型的数据; (2)所需的空间总是和集合的大小成正比; (3)操作所需的时间总是和集合的大小无关。××××××××××××××××××××××××××××××× 阅读全文
摘要:
1 public class Rational { 2 3 private int numerator; 4 private int denominator; 5 6 public Rational(int aNumerator, int aDenominator){ ... 阅读全文
摘要:
题意:FJ希望它的牛做一些清洁工作。有N只牛和T个时间段,每只牛可以承担一段时间内的工作。FJ希望让最小数量的牛覆盖整个T,求出其数量。若无法覆盖整个T,则输出-1.分析:首先要注意T表示T个时间段,也就是说1就是一个时间段,而[1, 2]是两个时间段。在这个问题上,我们要做到的是用最小的牛覆盖整个区间。比较容易想到的是先将牛按开始时间排序,因为如果一开始就覆盖不了那么后续就没有意义可以直接输出-1。贪心选取在满足当前开始时间的前提下,其结束时间的大的牛,因为在满足开始前提下,当然是覆盖得越多越好。可以简单设想如果可以用一只覆盖得比较小的牛来做到最优结果,那么用覆盖得最大的必然也是最优结果。 阅读全文
摘要:
题意:有一个烤饼器可以烤r行c列的煎饼,煎饼可以正面朝上(用1表示)也可以背面朝上(用0表示)。一次可将同一行或同一列的煎饼全部翻转。现在需要把尽可能多的煎饼翻成正面朝上,问最多能使多少煎饼正面朝上? 输入:多组输入,每组第一行为二整数r, c (1 ≤ r ≤ 10, 1 ≤ c ≤ 10 000),剩下r行c列表示煎饼初始状态。r=c=0表示输入结束。 输出:对于每组输入,输出最多能使多少煎饼正面朝上。(翻译参考自:http://bbs.byr.cn/#!article/ACM_ICPC/73337?au=Milrivel)分析:这个是二维的穷举,因为列数比较多行数比较少,所以可对行做深度 阅读全文
摘要:
题意:给定一个5*5的地图,每个格子上有一个数字。从一个格子出发(上下左右4个方向),走5步将数字连起来可以构造出一个6位数。问该地图可以构造出多少个不同的6位数。分析:可以对每个格子做深度优先遍历,构造出所有数字,但要注意不要重复计数。在这里,我使用了set来保存已构造出的数字,结果就是set中的元素个数。 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 //输入 8 int a[5][5]; 9 10 set st; //保存已构造的数字11 12 const int dx[... 阅读全文
摘要:
SDN的基础理论部分学得差不多,剩下就是搭建环境来做了。暂时还不想做,忽然想看看什么是云计算,所以买了这本书。 第一章主要是简介,没有什么理论知识,但可以对云计算有一个初步概念。 首先要说的是CSA(Cloud Security Alliance)提出的云计算定义:云计算的本质是一种服务提供模型,通过这种模型可以随时、随地、按需地通过网络访问共享资源池的 资源,这个资源池的内容包括计算资源、网络资源、存储资源等,这些资源能够被动态地分配和调整,在不同用户之间灵活地划分。 接下来是NIST提出的云计算架构图,相当全面。网上没找到相关图片,自己做了一幅。。 IaaS(Infrastru... 阅读全文
摘要:
题意:已知有N个数分别为1-N,如下图为4个数。相邻两两相加直至只剩下一个数,下图的结果就是16。 3 1 2 4 4 3 6 7 9 16 现在反过来看,告诉你数的个数N和最终结果,问这N个数的初始序列是什么。求出字典序最小的初始序列。上图的初始序列也可以是3 2 1 4,但这不是字典序最小。分析:这题用全排列的方式非常容易做。首先初始化数组为1-N,然后用STL提供的按字典序生成全排列的函数next_permutation即可枚举全排列。对于每一组数,通过计算可以知道它是否能得出已知结果。最先找到的那组数就是字典序... 阅读全文