| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5537 人关注过本帖
标题:第十八期编程比赛
只看楼主 加入收藏
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
还这么多要求啊

该学习了。。。
2007-09-15 11:57
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
以下是引用zhanghuan_10在2007-9-15 11:57:19的发言:
还这么多要求啊

没办法,目前只能这样,在慢慢改进中。。。。



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/

2007-09-15 11:58
andyzhshg
Rank: 2
等 级:论坛游民
帖 子:111
专家分:20
注 册:2007-9-1
收藏
得分:0 
哎,提交了几次扇形面积那题都错了,也不知错在那里,多给几组测试数据就好了。或者把错误说的具体一些。
还是怪自己水平有限吧。

编程并快乐着
2007-09-15 12:40
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
楼上的错在精度缺失



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
2007-09-15 13:01
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
以下是引用andyzhshg在2007-9-15 12:40:41的发言:
哎,提交了几次扇形面积那题都错了,也不知错在那里,多给几组测试数据就好了。或者把错误说的具体一些。
还是怪自己水平有限吧。

要用double.pi=acos(-1)..


2007-09-15 13:52
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
以下是引用ACKing在2007-9-15 11:22:01的发言:

是15

是不是有什么trick.我一直WA.
还有我的程序对这组数据明显超时
8 8 100
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooo
oooooooO

#include<stdio.h>
int b[10][10];
int n,m,k,ans,flag;
int dx[]={1,0,0,-1};
int dy[]={0,1,-1,0};
char s[10][10];

void dfs(int x,int y,int kk,int path)
{
int temp,i,j,xx,yy;
char ch;
if(x==n-1&&y==m-1)
{
if(flag)
{
ans=path;
flag=0;
}
else ans=ans>path?path:ans;
}
if(ans!=-1&&path>=ans) return ;
for(i=0;i<4;i++)
{
xx=dx[i]+x;
yy=dy[i]+y;
if(xx>=0&&xx<n&&yy>=0&&yy<m)
{
if(s[xx][yy]=='.'&&b[xx][yy]<kk)
{
temp=b[xx][yy];
b[xx][yy]=kk;
dfs(xx,yy,kk,path+1);
b[xx][yy]=temp;
}
else if(s[xx][yy]=='o')
{
b[xx][yy]=kk+1;
s[xx][yy]='.';
dfs(xx,yy,kk+1,path+1);
s[xx][yy]='o';
b[xx][yy]=0;
}
else if(s[xx][yy]=='O'&&kk>=k)
{
b[xx][yy]=kk+1;
s[xx][yy]='.';
dfs(xx,yy,kk+1,path+1);
b[xx][yy]=0;
s[xx][yy]='O';
}
}
}
}
int main()
{
int i,j;
while(scanf("%d%d%d",&n,&m,&k)!=EOF)
{
for(i=0;i<n;i++) scanf("%s",s[i]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) b[i][j]=0;
}
ans=-1;
flag=1;
if(s[0][0]=='o')
{
s[0][0]='.';
b[0][0]=1;
dfs(0,0,1,1);
}
else if(s[0][0]=='O')
{
if(k==0)
{
s[0][0]='.';
b[0][0]=1;
dfs(0,0,1,1);
}
else ans=-1;
}
else if(s[0][0]=='#') ans=-1;
else dfs(0,0,0,1);
printf("%d\n",ans);
}
return 0;
}


2007-09-15 14:01
ACKing
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-9-4
收藏
得分:0 
你给的那组数据。我的也出不来。。。。
4 4 0
O...
....
o.OO
o#O#

不过这组数据你的都出不来
2007-09-15 16:32
ACKing
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-9-4
收藏
得分:0 
2 2 1
..
.o

这组你错了。。。
2007-09-15 16:35
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
下午去学绘画了,没过来,抓紧一下,改一下我的程序:
#include<stdio.h>
#include<string.h>
/*
'.'代表没有怪物,'o'代表有小怪,'O'代表大怪,'#'代表的是不能走的石头
*/
struct
{
char mapnow[8][8];
char small;
char x,y;
char l;
} line[300500]={0};
int linenow=0;
int maxline=1;
int qc(int p)
{
int i;
for(i=0;i<maxline;i++)
if(!memcmp(line[i].mapnow,line[p].mapnow,64))
if(line[i].small==line[p].small)
if(line[i].x==line[p].x && line[i].y==line[p].y)
maxline--;
}
int main(void)
{
int m,mm,n,nn,k;
int i,j;
while(scanf("%d%d%d",&m,&n,&k)!=EOF)
{
linenow=0;
maxline=1;
memset(line,0,sizeof(line));
for(i=0;i<m;i++) scanf("%s",line[linenow].mapnow[i]);
if(line[linenow].mapnow[0][0]=='o') line[linenow].small++;
if(line[linenow].mapnow[0][0]=='O')
if(k==0) line[linenow].small++; else { printf("-1"); goto end; }
if(line[linenow].mapnow[0][0]=='#') { printf("-1"); goto end; }
line[linenow].mapnow[0][0]='.';
line[linenow].x=0;
line[linenow].y=0;
line[linenow].l++;
if(line[linenow].x==m && line[linenow].y==n) { printf("1"); goto end; }
mm=m-1;
nn=n-1;
for(linenow=0;linenow<maxline;linenow++)
{
if(line[linenow].x<mm)
{
if(line[linenow].mapnow[line[linenow].x+1][line[linenow].y]=='o')
{
line[maxline]=line[linenow];
line[maxline].x++;
line[maxline].mapnow[line[maxline].x][line[maxline].y]='.';
line[maxline].small++;
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
else
if(line[linenow].mapnow[line[linenow].x+1][line[linenow].y]=='.')
{
line[maxline]=line[linenow];
line[maxline].x++;
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
else
if(line[linenow].mapnow[line[linenow].x+1][line[linenow].y]=='O' && line[linenow].small>=k)
{
line[maxline]=line[linenow];
line[maxline].x++;
line[maxline].mapnow[line[maxline].x][line[maxline].y]='.';
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
}
if(line[linenow].x>0)
{
if(line[linenow].mapnow[line[linenow].x-1][line[linenow].y]=='o')
{
line[maxline]=line[linenow];
line[maxline].x--;
line[maxline].mapnow[line[maxline].x][line[maxline].y]='.';
line[maxline].small++;
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
else
if(line[linenow].mapnow[line[linenow].x-1][line[linenow].y]=='.')
{
line[maxline]=line[linenow];
line[maxline].x--;
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
else
if(line[linenow].mapnow[line[linenow].x-1][line[linenow].y]=='O' && line[linenow].small>=k)
{
line[maxline]=line[linenow];
line[maxline].x--;
line[maxline].mapnow[line[maxline].x][line[maxline].y]='.';
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
}
if(line[linenow].y<nn)
{
if(line[linenow].mapnow[line[linenow].x][line[linenow].y+1]=='o')
{
line[maxline]=line[linenow];
line[maxline].y++;
line[maxline].mapnow[line[maxline].x][line[maxline].y]='.';
line[maxline].small++;
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
else
if(line[linenow].mapnow[line[linenow].x][line[linenow].y+1]=='.')
{
line[maxline]=line[linenow];
line[maxline].y++;
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
else
if(line[linenow].mapnow[line[linenow].x][line[linenow].y+1]=='O' && line[linenow].small>=k)
{
line[maxline]=line[linenow];
line[maxline].y++;
line[maxline].mapnow[line[maxline].x][line[maxline].y]='.';
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
}
if(line[linenow].y>0)
{
if(line[linenow].mapnow[line[linenow].x][line[linenow].y-1]=='o')
{
line[maxline]=line[linenow];
line[maxline].y--;
line[maxline].mapnow[line[maxline].x][line[maxline].y]='.';
line[maxline].small++;
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
else
if(line[linenow].mapnow[line[linenow].x][line[linenow].y-1]=='.')
{
line[maxline]=line[linenow];
line[maxline].y--;
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
else
if(line[linenow].mapnow[line[linenow].x][line[linenow].y-1]=='O' && line[linenow].small>=k)
{
line[maxline]=line[linenow];
line[maxline].y--;
line[maxline].mapnow[line[maxline].x][line[maxline].y]='.';
line[maxline].l++;
if(line[maxline].x==mm && line[maxline].y==nn) { printf("%d",line[maxline].l); goto end; }
//printf("%d ",line[maxline].l);
qc(maxline);
maxline++;
}
}
if(maxline>300000) { printf("-1"); goto end; }
}
if(maxline<=300000) printf("-1");
end:
printf("\n");
}
return 0;
}

[此贴子已经被作者于2007-9-15 17:37:38编辑过]


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-09-15 17:24
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
我在59楼的程序
时间不超,空间不超,BFS算法也应该没问题,就是结果错.....
到底哪儿错了?

[此贴子已经被作者于2007-9-15 17:30:37编辑过]


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-09-15 17:29
快速回复:第十八期编程比赛
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018091 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved