网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月18日漏签0天
c语言吧 关注:801,560贴子:4,373,553
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 13回复贴,共1页
<<返回c语言吧
>0< 加载中...

【求助】程序不能输出正确结果。

  • 只看楼主
  • 收藏

  • 回复
  • Wolfyboy
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
写了很久的程序,却输不出正确答案,大佬可以帮忙看看吗?
还有,调试框里那一堆“打不开文件”是怎么回事?
原题:https://wenku.baidu.com/view/70de9e29854769eae009581b6bd97f192279bf62.html?rec_flag=default&sxts=1534600153308 ;Day2 2.奶酪。
代码见楼下。









  • Wolfyboy
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//源代码:
//cheese.c
#include<stdio.h>
#include<math.h>
#include<stdlib.h>typedef struct bubble {
int claw;
int z;
int x;
int y;
struct bubble *last;
struct bubble *next;
}BUB;int search();
int start();
int delline();
int h, r;
BUB *head;int main() {
int i,j;
int T;
FILE *fin,*fout; fin=fopen("cheese.in","r");
fout = fopen("cheese.out", "w"); fscanf(fin,"%d",&T);
for (i = 0; i < T; i++) {
int n;
head = NULL;
fscanf(fin,"%d%d%d",&n,&h,&r);
BUB *newbub,*r,*l;
newbub = NULL; l= NULL; r = NULL;
for (j = 0; j < n; j++) {
int x, y, z;
fscanf(fin, "%d%d%d", &x, &y, &z);
newbub = (BUB*)malloc(sizeof(BUB));
newbub->next = NULL;
newbub->last = NULL;
newbub->claw = 1;
newbub->x = x;
newbub->y = y;
newbub->z = z;
if (head == NULL) {
head = newbub;
r = newbub;
//newbub->next = l;
}
else {
int bo = 1;
//int s;
while (bo) {
if (r==NULL|| l == NULL||newbub->z > r->z&&newbub->z < l->z ) {
newbub->last = r;
if(r!=NULL)r->next = newbub;
if(l!=NULL)l->last = newbub;
newbub->next = l;
r = newbub;
//newbub->next = l;
//l = newbub->next;
bo = 0;
continue;
}
if (newbub->z < r->z) {
l = r;
r = r->last;
continue;
}
if (newbub->z > l->z) {
r =l;
l = l->next;
continue;
}
}
}
/*if (head == NULL) {
head = newbub;
r = newbub;
}
else {
newbub->last = r;
r->next = newbub;
r = newbub;
}*/
}
if (start()) {
fprintf(fout,"YES\n");
}
else {
fprintf(fout, "NO\n");
}
delline();
}
fclose(fin);
fclose(fout);
return 0;
}
int start() {
BUB *p;
p = head;
while (1) {
if (p->z >= r) return 0;
if (search(p)) return 1;
else p = p->next;
}
}
int search(BUB *p) {
if (p->z >= h - r)return 1;
BUB *a;
double d;
a = p->next;
while (a->z - p->z <= r) {
if (a->claw) {
a->claw = 0;
d = sqrt(pow(p->x - a->x, 2) + pow(p->y - a->y, 2) + pow(p->z - a->z, 2));
if (d <= r)
if (search(a))return 1;
}
if (a->next == NULL)break;
else a = a->next;
}
a = p->last;
while (p->z - a->z <= r) {
if (a->claw) {
a->claw = 0;
d = sqrt(pow(p->x - a->x, 2) + pow(p->y - a->y, 2) + pow(p->z - a->z, 2));
if (d <= r)
if (search(a))return 1;
}
if (a->last == NULL)break;
else a = a->last;
}
return 0;
}
int delline() {
BUB *p,*l;
p = head;
head = NULL;
while (p != NULL) {
l = p;
p = p->next;
free(l);
}
return 0;
}


2025-12-18 19:57:37
广告
不感兴趣
开通SVIP免广告
  • Wolfyboy
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//输入文件:
//cheese.in
3
2 4 1
0 0 1
0 0 3
2 5 1
0 0 1
0 0 4
2 5 2
0 0 2
2 0 4


  • Wolfyboy
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
NO
NO
NO


  • Wolfyboy
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Hello? Someone here? Anybody?


  • Wolfyboy
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
编译,运行,都没问题(返回值为0),就是答案不对。


  • ghj123h
  • 葱の帝球
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
所以说,你没有完整代码只有题目(而且题目只要说明NOIP2017TGD2就行了)


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 13回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示