PAT
Thare_Lam
Hello World。
展开
-
1007. Maximum Subsequence Sum
Tips:这题真心是郁闷要死了.自己没有看太清题目,加上题目给的实例又比较特殊,我一直以为后面是输出最大序列的左右两个下标,结果一直只对两个点.后来网上查了下别人的blog再仔细对了下题目,才发现自己理解错误.本题注意的点:(1)数列全为负数输出第一位和最后一位.(2)如果数列最大为0,则输出0 0 0即可.(3)如果数列最大子数列最左项和最右项不能为0.本题一次循环即可得出结果.边输入边用m原创 2015-10-14 19:26:14 · 472 阅读 · 0 评论 -
1079. Total Sales of Supply Chain
Tips:真是no zuo no die.说好的尽量用C来写,脑子一抽,又用Java来写了,最直接的方法,结果来了个超时.好吧,以为是算法问题,继续改,各种思路,仍得不到解决.换C++吧,还是各种思路,没能AC.最后想试试看用C++来写最开始的最直接的方法,呵呵,AC了…再说一遍,没什么事别用Java!!!这题没什么技巧,也没什么陷阱,无非就先把输入的数据用二维数组保存起来,然后用到了队列.其它原创 2015-10-14 19:39:06 · 799 阅读 · 0 评论 -
1078. Hashing
Tips:说到此题真是略显辛酸.3月份做这题的时候犯过错,现在又犯了同样的错.务必看清题目啊,题目说的很清楚,用平方探测法处理冲突,怎么就是不长眼呢?素数的计算.也挺久没遇到素数了,突然一下子忘了2是不是素数,然后想当然的认为它不是.以后碰到这种问题得好好思考思考,网上查查,确认之后再写.不然写到后面把前面的问题给忽略了,就会一直找不到错误在哪.C/C++的一些基本的原理还是没高清.给数组开辟原创 2015-10-14 19:37:35 · 412 阅读 · 0 评论 -
1009. Product of Polynomials
Tips:本题与1002类似,只不过此题是求乘积,但和1002注意的地方一样.还需注意的是,本题开辟的数组空间大小应为2001.#include <iostream>using namespace std;#define LEN 2001int main() { int k1,k2,i,j,count; int *pCoe; double *pIndex;原创 2015-10-14 19:29:09 · 390 阅读 · 0 评论 -
1008. Elevator
Tips:这题实在没什么难度,也就不说什么了.#include <stdio.h>int main(){ int n,floor,time,last,gap,i; while((scanf("%d",&n) != EOF)){ time = 0; last = 0; for(i = 0;i < n;i++){原创 2015-10-14 19:27:39 · 484 阅读 · 0 评论 -
1027. Colors in Mars
Tips:注意大小写.#include <stdio.h>void p(int a){ char c; if(a < 10) c = a + '0'; else{ switch(a){ case 10: c = 'A'; break;原创 2015-10-14 19:34:11 · 409 阅读 · 0 评论 -
1006. Sign In and Sign Out
Tips:这题没什么陷阱,基本上例子能通过也就能AC,所以通过率也蛮高的.本题看似有些复杂,需要把字符串时间转换成我们熟悉的int类型来判断时间的早晚.其实这里有个更方便的方法,就是直接利用strcmp(str1,str2)来比较简便.注意输完M后getchar()掉回车.#include <stdio.h>#include <string.h>int main(){ int n,原创 2015-10-14 19:24:20 · 496 阅读 · 0 评论 -
1005. Spell It Right
Tips:这题算是很简单的一道题了,注意单词不要拼写错误就行.#include <stdio.h>char* converse(int n){ switch(n){ case 0: return "zero"; case 1: return "one"; case 2: return "two"; case 3: retur原创 2015-10-14 19:22:10 · 389 阅读 · 0 评论 -
1015. Reversible Primes
Tips:这题开始一直没太弄懂题目,以为给出的数是以d为底,相当于d进制(但各位可能比d大),然后转换成10进制,再倒置.结果只能过一个点.而且如果按照我的思路,第二个case应该是No才对.最后只能搜搜其它人的答案了.原来是这样做的:先把给出的十进制数转换成d进制,然后这个d进制再逆置,再转换成十进制,再判断. 最后借鉴了某位浙大大神的blog,其中的转置处理写的很nice.#includ原创 2015-10-14 19:33:04 · 450 阅读 · 0 评论 -
1077. Kuchiguse
Tips:此题采用的是边输入边比较的方法,拿第一次输入的字符串依次和后面输入的字符串进行比较,left下标非递减.因为读入的字符串可能带有空格,于是乎gets(common)连续执行了两次才去除了回车的麻烦.具体原因还没深究,标记下以后再来更新.中间循环体加入了left<=rigth,这样如果前面有完全不匹配的字符串时,left就会赋值大于right,从而不再执行循环的内容.相同代码用Jav原创 2015-10-14 19:35:59 · 510 阅读 · 0 评论 -
1011. World Cup Betting
Tips:太简单了,没啥好说的.#include <stdio.h>int main(){ int i; float d[3][3]; float dMax[3]; char t[3] = {'W','T','L'}; char c[3]; float money; while(scanf("%f %f %f",&d[0][0],&d[0]原创 2015-10-14 19:30:25 · 455 阅读 · 0 评论 -
1002. A+B for Polynomials
Tips:double数组必须初始化为0.默认虽为0,但是是不准确的0.第2行输入的数据在加之前要判断num[i]是不是0,加之后也要判断下是否为0,再对count进行响应操作.最后打印数据的时候空格放在数据前打印,若放在后面会造成最后一个数据也打印一个空格,从而格式错误.#include<stdio.h>#define LEN 1001int main() { double nu原创 2015-10-14 19:20:33 · 433 阅读 · 0 评论 -
1001. A+B Format
Tips:首先判断和的正负,这个比较容易考虑到.从高位开始输出,每三位一个分隔,要注意若更高位有过输出,则次位输出的时候不够三位记得补0.#include <stdio.h>int main() { int a,b,c,temp; int flag1,flag2; while(scanf("%d %d",&a,&b) != EOF){ c = a + b原创 2015-10-14 19:16:53 · 447 阅读 · 0 评论