争做python小能手(一)

通过在 Codeforces 上用 Python 过题来增加对 python 的理解。

------------------------------------

CodeForces 208A

--

s = raw_input()
a = s.split('WUB')
for t in a:
	if t!='':
		print t,

--

1、 raw_input()读取一行输入作为字符串,一般配合split()作为读取数据

2、 str.split(str="", num=string.count(str))  该方法返回字符串中的所有单词的列表,使用str作为分隔符(默认为空格),拆分的数目为num。

3、 print 后面用逗号隔开表示输出后不换行,用空格链接下一个输出,实际上这种情况用join更方便

4、 str.join(sequence)  用str分割sequence中的每一个元素


由于cf判答案是忽略空格,所以也可以这样写

--

print raw_input().replace('WUB', ' ')

--

5、 str.replace(old, new[, max]) 该方法返回将old替换为new后的字符串,替换数量默认为最大。

-------------

CodeForces 208D

--

n = input()
p = map(int,raw_input().split())
a = map(int,raw_input().split())
money = 0
ans = [0] * 5
for x in p:
	money += x
	for i in xrange(4,-1,-1):
		ans[i] += money // a[i]
		money %= a[i]
print ' '.join(map(str,ans))
print money
---

6、 input()读入一个元素,如果要读入字符串的话,字符串要加上引号,通常用来读入数字

7、 map(function, iterable, ...)  来自于函数式编程的思想,对可迭代函数'iterable'中的每一个元素应用‘function’方法,将结果作为list返回。

8、 python中初始化一个一维数组要用 [0] * n,初始化多维数组则要用[[0]*(m) for _ in xrange(n)]

-----------------

CodeForces 208B

--

n = input()
top = raw_input().split()
stack = [top]
st = set([tuple(top)])
found = False
while (len(stack)):
	top = stack.pop()
	if len(top)==1:
		found = True
		break;
	for i in [-2,-4]:
		if len(top)>=-i and (top[-1][0]==top[i][0] or top[-1][1]==top[i][1]):
			tmp = list(top)
			last = tmp.pop()
			tmp[i+1] = last
			if tuple(tmp) not in st:
				st.add(tuple(tmp))
				stack.append(tmp)
if found:
	print "YES"
else:
	print "NO"

--

9、set是一个无序不重复元素集。set([e1,e2,e3]) 将列表里的元素初始化为一个集合

10、 tuple()将list转换成tuple,list()将tuple转换成list...

11、 len() 求元素数量

12、 听说python递归效率低,用栈更快?大概吧...



posted on 2014-03-09 15:22  电子幼体  阅读(177)  评论(0编辑  收藏  举报

导航