序 :
刚刚接触PAT乙级,对于乙级算法题还是有思路,但是却不成熟,与高手的代码相比,思路不够简洁,不过也正常,慢慢修炼吧。以下为 get到的一些思路,想法,代码模块,以为己用。
thought:
①:
对于一个对象,例如:PAT b1012里的A1,A2,A3,A4,A5, 其都有共同两个关键数据即count和ans,为了避免定义多个变量的麻烦,于是定义了一个count[5]和ans[5],用来存放数据;
再如:PATb1018里的甲和乙,都有各自的胜负平数需要记录,于是定义一个times_A{3},times_B{3}来记录其各自的胜负平数,从而避免了在分别定义胜负平的变量的麻烦。
code:
①:
对于一个对象,例如一个队列,或一个数组,假设有两个位置分别为L1和L2,如何表示L1在L2的左边,右边,同一点呢?
以数组为例:a[3],Len = 3,a[L1] , a[L2],假设L1与L2相邻,那么 (L1 + 1 )% len == L2 即说明 L1在L2的左边,(L2 + 1 )% len == L1,即说明L1在L2的右边,L1 == L2即说明在同一点。当我们赋予L1和L2的顺序一个特定意义时,我们这个想法也许能有用。
以队列为例:front和rear,假设这个队列的len = 3;要如何来重复使用这个队列来达到节约资源的目的呢?
rear++ % len ,当rear == len + 1时 代表这个队列已经满了,那么回到队列的首部重新开始新的数据写入(覆盖)。