繁尘、离梦
(背包特别版见3楼)技能训练营续坑!

本帖最后由 繁尘、离梦 于 2013-4-25 15:05 编辑

技能训练营开坑()

!!!!每题第一个提交的亲并且能通过的亲,我会在结题前,把它的名字mark在题目后方!!!!!10~


最近看了下大家提问的内容,主要是:!27~

算法为主,一些基础知识、习题啊什么的也带着些

既然这样为了活跃社区,特开一个关于编程技能训练的互动帖。!7~

接下来楼主会找很多题目给新手们练习,时不时会更新一楼内容。

2楼是一道题目,一般持续1-2天,第三天会把2楼内容放到3楼,

3楼是历史题目,亲们也可以同样练习,

并且把代码发在下面的一些楼层里,

注明是第几题,楼主会去看代码去验证你的代码准确性和存在的问题

楼主是大水笔,亲们别怕出错,勇敢的训练起来~~

喵~~~!25~

希望版主们的支持~~

米娜桑,一叩首!054~

该贴已经同步到 繁尘、离梦的微博

foodszhu
貌似发的不对
展开Biu

恩。。。貌似发的不对。。。。这下再看看吧。。。就是简单的回溯想法。。。全部举一边

[查看全文]
foodszhu
看来真的很火啊
展开Biu

繁尘、离梦 发表于 2013-4-24 12:43

python看来真的很火啊,大概看懂了些,装了个python编译器,要我命3000啊。努力去看这个语法什么的

...

没仔细想题。英语实在太烂。。。例子肯定能过没错了。。。一排有好几堵墙没用吧。。。。只要考虑最近的两堵就好了。恩。。。应该是哪里手贱多写了个break。。其实平时我也是拿C写题的。。。不过这种大概想想的一般就用python先写个想法

[查看全文]
繁尘、离梦
楼主主要是
展开Biu

SakuraSa 发表于 2013-4-24 12:27

[mw_shl_code=python,true]class FireMap:

def __init__(self,inputMap,size):

self.size=size;self.m=l ...

楼主主要是C/C++,希望找会各种语言的亲和我一起努力把这件事情做下去!如果你愿意,求伸爪!25~

[查看全文]
繁尘、离梦
题中说了是
展开Biu

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~

[查看全文]
绯色基
输入头数
展开Biu

[mw_shl_code=c,true]#include <stdio.h>

#include <stdlib.h>

int main()

{

int m,n;//m输入头数,n输入脚数

scanf("%d,%d",&m,&n);

n=(n-2*m)/2;

m=m-n;

printf("鸡:%d\n兔:%d\n",m,n);

system("pause");

return 0;

}

[/mw_shl_code]

[查看全文]
繁尘、离梦
本帖最后由
展开Biu

本帖最后由 繁尘、离梦 于 2013-4-24 12:51 编辑

foodszhu 发表于 2013-4-24 12:01

回溯。。。。不知道对不对

[mw_shl_code=python,true]while True:

n = int(raw_input())

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~

[查看全文]
SakuraSa
第二题的数据规模是多少呢
展开Biu

[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
本帖最后由
展开Biu

本帖最后由 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]

[查看全文]