POJ 1386 Play on Words C++版
题目链接:http://poj.org/problem?id=1386
解释下题意,给出一组字符串,问是否能将这些字符串首尾相接组成一个长字符串,首尾两个字母一样才能连接。
简化题目,我们只考虑首尾字母,组成的有向欧拉回路,要能够相连,必须全部入度等于出度或者除了两个外其他点的入度等于出度,且不相等的一个入度比出度大1,一个小1!
代码如下:
1 | /*Problem: 1386 User: awq123 |
题目链接:http://poj.org/problem?id=1386
解释下题意,给出一组字符串,问是否能将这些字符串首尾相接组成一个长字符串,首尾两个字母一样才能连接。
简化题目,我们只考虑首尾字母,组成的有向欧拉回路,要能够相连,必须全部入度等于出度或者除了两个外其他点的入度等于出度,且不相等的一个入度比出度大1,一个小1!
代码如下:
1 | /*Problem: 1386 User: awq123 |
题目链接:http://poj.org/problem?id=1543
题意不难,求小于n的数的立方能否写成三个的立方和,水题,暴力枚举!
代码如下:
1 | /*Problem: 1543 User: awq123 |
题目链接:http://poj.org/problem?id=1258
标准prim题,无变化,利用简单prim算法解决,先开始WA了一次,后来发现这题,是多数据输入的,修改了个while循环过了!
代码如下:
1 | /*Problem: 1258 User: awq123 |
题目链接:http://poj.org/problem?id=1455
解释下题意,n个人围着一个桌子坐,可以交换两个人的位置,问至少交换多少次,可以使座次左右相反!比如原来使12345,要变成54321,但是注意桌子使圆的也可以变为43215同样满足条件!
说起交换,不由想起了冒泡排序,我们这样看讲12345用冒泡排序降序排列,交换次数为n*(n-1)/2,但是我们可以讲这些数分为两块,分别交换,计算推论我们可以知道,两堆越接近越少,那么12345变为32154或21543交换次数最少.
代码简单,纯数学问题,重在思考!
1 | /*Problem: 1455 User: awq123 |
说来好笑,为什么大家都很在意新来的学妹,难道是身边的女孩看厌了!
开学的日子里,看的多了,还是讨论学妹的,不一定是认真的,但多少还是感兴趣的,一觉起来,照例看看空间,人人,好像新生报道了啊,什么今天不上班了啊,去迎接学妹啊,呵,幸好我在家里,快两周没回来看爸妈了,还是在家里呆着好了,不是因为家里舒服,而是家里自由温馨!
想想,现在要看到新生们要军训了,第一感觉就是过了一年了!相比大一的基础课,大二的专业课还是蛮难的,虽然C++的我也学过,但是多数是对付ACM用的STL,面向对象这一思路我一直认为他会用JAVA教,失误了,呵
总的来说大二,要让自己忙,我不想无聊下去!
题目链接:http://poj.org/problem?id=2602
题意要求我们模拟高精度加法运算,我们把数字横过来看就是正常加法了。不多说模拟进位运算,现开始用整型数组保存数据,结果一直超时,于是用字符数组试了下,事实证明,输出字符串,比没一个字母输出快!
PS:其中输入时,后面加上了n也可以在输入语句后加上getchar()代替!
代码如下:
1 | /*Problem: 2602 User: awq123 |
题目链接:http://poj.org/problem?id=1048
题意,求小于n的数中和n互质的数的个数!
这题,我先开始的思路是针对每个小于n的数求最大公约数,但是用辗转相除法,递归层数过高!后来想开个数组,标记互质的数,但是n太大,无法开出来,搜索了一下,有一个函数,是用来解决这一问题的,就是欧拉函数,我参看维基百科,写出算法!
欧拉函数的求解,可以简化为,将n写成a1^n1a2^n2….an^nn的形式,那么这个数的欧拉函数表达式为a1^(n1-1)(a1-1) * a1^(n2-1)*(a1-1)….
还不懂的去看看维基百科!
代码如下:
1 | /*Problem: 2407 User: awq123 |
题目链接:http://poj.org/problem?id=1046
题意:股票经纪人要在一群人中散布一个传言,传言只能在认识的人中传递,题目将给出人与人的关系(是否认识),以及传言在某两个认识的人中传递所需的时间,要求程序给出以哪个人为起点,可以在好事最短的情况下,让所有人收到消息。
简化为有向连同图的最短路径问题,用floyd算法算法最简单,flyod算法的实现,我根据伪代码编写的:
1 | void floyd() |
代码如下:
1 | /*Problem: 1125 User: awq123 |
题目链接:http://poj.org/problem?id=3049
上学了,时间不多,先水一把!
题目给出了算法,其中A代表1,依此类推,注意含空格的字符串的输入,我们一般用gets,其实注释掉的那句也可以的!
代码如下:
1 | /*Problem: 3094 User: awq123 |
题目链接:http://poj.org/problem?id=1519
这个题,原本我想模拟做的,但是其实又更简单的办法,让我很惊讶,难道是小学奥术没学好??
把一个数字的各位相加得到一个和,这个和又是一个新的数,把这个数的各位再次相加又得到一个和,如此一直重复做,直到最后的数字之和是一位数。这个数就是原数除以9的余数,我们把这个余数称之为原数的”数字根”。这道题肯定没有告诉你数字根和各位相加对9取余是一样的啦
代码如下:
1 | /*Problem: 1519 User: awq123 |