本帖最后由 繁尘、离梦 于 2013-4-25 15:05 编辑
技能训练营开坑()!!!!每题第一个提交的亲并且能通过的亲,我会在结题前,把它的名字mark在题目后方!!!!!10~
最近看了下大家提问的内容,主要是:!27~算法为主,一些基础知识、习题啊什么的也带着些,
既然这样为了活跃社区,特开一个关于编程技能训练的互动帖。!7~
接下来楼主会找很多题目给新手们练习,时不时会更新一楼内容。
2楼是一道题目,一般持续1-2天,第三天会把2楼内容放到3楼,
3楼是历史题目,亲们也可以同样练习,
并且把代码发在下面的一些楼层里,
注明是第几题,楼主会去看代码去验证你的代码准确性和存在的问题
楼主是大水笔,亲们别怕出错,勇敢的训练起来~~
喵~~~!25~
希望版主们的支持~~
米娜桑,一叩首!054~
该贴已经同步到 繁尘、离梦的微博
SakuraSa 发表于 2013-4-24 12:27[mw_shl_code=python,true]class FireMap:
def __init__(self,inputMap,size):
self.size=size;self.m=l ...
!21~题中说了是5呢,
挺好的,写的非常清晰,让没学过的楼主也看懂了。
膜拜一下!27~很规范哟,继续加油,
这是ZOJ的http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1002
可以进去注册提交一下,验证你的思路是否正确
因为它测试数据很多,但是规格是挺小的,5*5的递归已经是很大了。而且很可能10几次迭代,!25~
初步判断是思路肯定是没错的!25~
[查看全文]
本帖最后由 繁尘、离梦 于 2013-4-24 12:51 编辑
python看来真的很火啊,大概看懂了些,装了个python编译器,要我命3000啊。努力去看这个语法什么的!23~
如果是C++表示没压力,主要是不习惯python的语法,到哪里结束神马的不是很清晰。!21~
亲,你确定你的程序能过了测试数据了吗,楼主怎么感觉难啊?!052~
你先告诉我你的思路吧!9~
如果有连续两面墙在一起或者一排上面有好几个墙的时候,你的for循环不足以使得空白标记继续的吧,这时候应该是第二次继续试探用getf()继续做接下来的标记的吧
如果可以的话,http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1002 去提交一下看看呢,
因为楼主对python不是很熟,很可能误判,好吧这帖子更多的只能是给C或者C++学习呢,当然欢迎你和楼主一起帮助其他新人,楼主如果错误判断了你的程序,请见谅和指出,楼主会虚心接受!25~
[查看全文]
[mw_shl_code=python,true]class FireMap:
def __init__(self,inputMap,size):
self.size=size;self.m=list()
for line in inputMap:
lst=list()
for ch in line:
lst.append(0 if ch=='.' else False)
self.m.append(lst)
def putFire(self,x,y):
if self.m[x][y] is False or self.m[x][y]>0:return False
self.putoutFire(x,y,1)
return True
def putoutFire(self,x,y,ch=-1):
self.__fire__(x,y,1,0,ch,True);self.__fire__(x,y,-1,0,ch)
self.__fire__(x,y,0,1,ch);self.__fire__(x,y,0,-1,ch)
def maxFire(self,counter=0):
maxCount=counter
for x in xrange(self.size):
for y in xrange(self.size):
if self.putFire(x,y):
maxCount=max(self.maxFire(counter+1),counter)
self.putoutFire(x,y)
return maxCount
def __fire__(self,px,py,dx,dy,ch,firstPos=False):
if not firstPos:
px+=dx;py+=dy
while px>=0 and py>=0 and px<self.size and py<self.size and (not self.m[px][py] is False):
self.m[px][py]+=ch
px+=dx;py+=dy
def getMap(size):
m=list()
for i in xrange(size): m.append(raw_input().strip())
return m
if __name__=='__main__':
while 1:
n=int(raw_input())
if n==0: break
print FireMap(getMap(n),n).maxFire()[/mw_shl_code]第二题的数据规模是多少呢0w0?
我这渣渣算法绝对只能过小数据……
[查看全文]
本帖最后由 foodszhu 于 2013-4-24 14:19 编辑
回溯。。。。不知道对不对
[mw_shl_code=python,true]import syswhile True:
n = int(sys.stdin.readline())
if not n:
break
d = [[t == 'X' and 1 or 0 for t in x] for x in (sys.stdin.readline() for i in range(n))]
def getF(row, col):
if row >= n:
return 0
if col >= n:
return getF(row + 1, 0)
maxn = [0]
isS = []
if d[row][col] == 0:
d[row][col] = 2
for j in range(n):
if d[j][col] == 0:
d[j][col] = 3
isS.append((j, col))
if d[j][col] == 1:
if j > row:
break
else:
for k in range(j):
if d[j][col] == 3 and (j, col) in isS:
d[j][col] = 0
isS.remove((j, col))
for j in range(n):
if d[row][j] == 0:
d[row][j] = 3
isS.append((row, j))
if d[row][j] == 1:
if j > col:
break
else:
for k in range(j):
if d[row][j] == 3 and (row, j) in isS:
d[row][j] = 0
isS.remove((row, j))
maxn.append(1 + getF(row, col + 1))
d[row][col] = 0
for j in range(n):
if d[j][col] == 3 and (j, col) in isS :
d[j][col] = 0
if d[row][j] == 3 and (row, j) in isS:
d[row][j] = 0
maxn.append(getF(row, col + 1))
return max(maxn)
print getF(0, 0)
[/mw_shl_code]
[查看全文]
