杭电oj答案,杭电oj1008题C++大家来看看我到底有啥错误了?
杭电oj答案,杭电oj1008题C++大家来看看我到底有啥错误了?详细介绍
本文目录一览: 杭电oj怎么查看题目答案
在网上查。1.首先,打开百度,输入“杭电OJ”进行搜索。2.然后进入杭电OJ官网,进行注册。3.输入注册信息。4.接下来进入详细注册界面,将信息填写完整后点击Submit。5.接下来即可登录帐号,填写用户名和密码后 点击Signin。6.接下来,进入刷题界面。7.英文题自行翻译,从11页开始有中文题,无论中英完成后都计入刷题数。8.做题时一定要仔细看题,积极尝试。9. 选择答题语言为C语言,并将代码粘贴到答题界面。10. 接下来就可以看答案是否正确了。
杭电oj1008题C++大家来看看我到底有啥错误了?
#include
using namespace std;
int main()
{
int n;
int x,b;
while(scanf("%d",&n)&&n)
{
int sum=0;
scanf("%d",&x);
sum+=x*6+5;
for(int i=0;i
<n-1;i++)
{
scanf("%d",&b);
if(b>x)
sum+=(b-x)*6+5;
else
sum+=(x-b)*4+5;
x=b;
}
printf("%d\n",sum); }
return 0;
}
</n-1;i++)
杭电oj1240,我觉得程序是对的,也能运行,但是OJ上编译错误,求解
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int n,i=0,sum[100],loop=0,j=0,loob[100],t=0,m=1;
printf("请输入行数(回车结束):\n ");
scanf("%d",&n);
j=n;
while(n--)//while做到任意输入。
{
printf("第%d行:\n ",m++);
for(;;i++)
{scanf("%d",&sum[i]);
loop++;//标记
if (getchar()=='\n')
{i++;
break;}
}
{loob[n]=loop;//保存标记。
loop=0;}
}
for(m=1;j>0;j--)
for(;t
<i;t++,m++) 使用标记。
{printf("%d ",sum[t]);
if(m==loob[j-1])
{m=1;t++;
printf("\n");
break;}}
//for(;j>0;j--)
//{for(;t
<m+loob[j-1];t++) 使用标记。
//printf("%d ",sum[t]);
//m=m+t;
//printf("\n");}
}
//非常完美了。花了我很多时间。 因为不善于写,也没看过什么书,自己想的。 错了,别急,正在改。 接着排序。 (太复杂了,不写了。)
/*
2
5
89
78
12
43
56
12 43 56 78 89
10
12
88
90
23
54
77
91
24
61
55
12 23 24 54 55 61 77 88 90 91
Press any key to continue
*/
#include
int main() {
int i,j,h,k,n,a,t,sum[100];
scanf("%d",&n); // 欲排序次数
while(n--) {
scanf("%d",&a); // 被排序数组的长度
for(i = 0;i < a;i++) scanf("%d",&sum[i]); // 读入数组元素
for (h = a - 1; h > 0; h--) { // 循环到没有比较范围
for (j = 0, k = 0; j < h; j++) { // 每次预置k=0,循环扫描后更新k
if (sum[j] > sum[j + 1]) { // 大的放在后面,小的放到前面
t = sum[j];
sum[j] = sum[j + 1];
sum[j + 1] = t; // 完成交换
k = j; // 保存最后下沉的位置。这样k后面的都是排序排好了的。
}
}
}
for(i = 0;i < a;i++) printf("%d ",sum[i]);
printf("\n");
}
return 0;
}
你这程序在VC++工具编译是正确的 也能运行
杭电oj1003题总是显示Wrong Answer,求指点,谢谢
//对于楼主的原代码,用如下数据进行测试://1//10 -5 -6 3 2 1 -7 6 3 -10 8//Case 1://9 3 8 (楼主原代码的输出,有误) 正确的应该是9 7 8//楼主的原代码,能计算出最大值,能定出k_end,//但是,不能定出正确的k_start//修改楼主的代码,让其能定出正确的k_start.////如果没有限制程序的大小,改用静态数组,不用动态数组,//调用malloc和free函数,有的编译器提示需要stdlib.h//测试://2//10 -5 -6 3 2 1 -7 6 3 -10 8//Case 1://9 7 8//测试://1//10 9 -6 -7 3 2 1 -1 -1 -1 9//Case 1://12 4 10#include
#include
using namespace std;int main()//最大子序列和{ int t, n, max; //原代码int *a, *sum_max; int a[100001],sum_max[100001]; int k_start, k_end; cin >> t; for (int i = 0; i < t; i++) { cin >> n; if (n >= 1 && n <= 100000) { //原代码a = (int*)malloc(n*sizeof(int));//动态数组 //原代码sum_max = (int*)malloc(n*sizeof(int)); //原代码for (int j = 0; j < n; j++) for (int j = 1; j <= n; j++) { cin >> a[j]; //按照原题目,从a[1]到a[n] } k_start = k_end = 1; //原代码k_start = k_end = 1; sum_max[1] = a[1]; //原代码sum_max[0] = a[0]; max = sum_max[1]; //原代码max = sum_max[0]; int tmp_k_start=k_start; //记录临时start //原代码for (int k = 1; k < n; k++) for (int k = 2; k <= n; k++) { if (sum_max[k - 1] >= 0) { sum_max[k] = a[k] + sum_max[k - 1]; if(sum_max[k]<0) { tmp_k_start=k+1; //记录临时start } if (sum_max[k]>max) { max = sum_max[k]; k_end = k ; //原代码k_end = k + 1; k_start=tmp_k_start; //这里,临时start发挥作用 } } else { sum_max[k] = a[k]; if(sum_max[k]<0) { tmp_k_start=k+1; //记录临时start } if (sum_max[k] > max) { max = sum_max[k]; k_start = k ; //原代码k_start = k + 1; k_end = k ; //原代码k_end = k + 1; tmp_k_start=k_end; //记录临时start } } } cout << "Case " << i + 1 << ":" << endl; cout << max << " " << k_start << " " << k_end << endl; if (i < t - 1) { cout << endl; } //原代码free(a); //free(sum_max); //释放动态内存 } //if (n >= 1 && n <= 100000)结束 }//for (int i = 0; i < t; i++)结束 return 0;}
杭电oj1097一直WA,错哪里了?代码如下
没看出有什么特别的错误
有一处 需要改一下
printf("Score is error!\n");
这里的叹号是中文标点
要改成英文的。
OJ是自动判定, 标点不符合 会判WA的
当a很大时,比如a=2^20时,a*a和a*a*a会溢出
实际上影响最后最后一位的只有原值中的最后一位,所以直接在while开始后的第一行加上a%=10;剩下的不变应该也就成了。
同时输出的时候要符合题目要求的格式,所以对每个case的结果输出后要换行的,printf语句中要用%d\n 格式。
杭电OJ1242 ZOJ 1649
感觉是HDU的测试数据有问题
因为有守卫的地方要花2的时间,纯BFS应该会错,起码有守卫的地方要延迟一个回合进Queue。
#include
#include
#include
#include
using namespace std;
int l,r;
int i,j,k;
char map[201][201];
int map1[201][201];
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int ai,aj,ri,rj;
struct tex
{
int x1,y1,map1;
}h,h2;
bool operator<(tex a,tex b)
{
return a.map1>b.map1;
}
int judge(int x2,int y2)
{
if(x2>=0&&x2
=0&&y2
<r)
return 1;
return 0;
}
void bfs(int x,int y)
{
priority_queue
te;
int x2,y2;
h.x1=x;
h.y1=y;
h.map1=0;
te.push(h);
while(!te.empty())
{
h=te.top();
te.pop();
if(h.x1==ri&&h.y1==rj)
break;
for(int i=0;i<4;i++)
{
x2=h.x1+dir[i][0];
y2=h.y1+dir[i][1];
if(judge(x2,y2)&&!map1[x2][y2]&&map[x2][y2]!='#')
{
h2.x1=x2;
h2.y1=y2;
if(map[x2][y2]=='x')
map1[x2][y2]=map1[h.x1][h.y1]+2;
else
map1[x2][y2]=map1[h.x1][h.y1]+1;
h2.map1 = map1[x2][y2];
te.push(h2);
}
}
}
}
int main()
{
while(scanf("%d%d",&l,&r)!=EOF)
{
for(i=0;i
<l;i++)
{
for(j=0;j
<r;j++)
cin>>map[i][j];
}
for(i=0;i
<l;i++)
{
for(j=0;j
<r;j++)
{
if(map[i][j]=='r')
{
ai=i;
aj=j;
}
if(map[i][j]=='a')
{
ri=i;
rj=j;
}
}
}
map[ai][aj]='#';
memset(map1,0,sizeof(map1));
bfs(ai,aj);
if(map1[ri][rj])
printf("%d\n",map1[ri][rj]);
else
printf("Poor ANGEL has to stay in the prison all his life.\n");
}
return 0;
}
</r;j++)
</l;i++)
</r;j++)
</l;i++)
</r)
C++ 杭电oj上的1084运行一点问题都没有,就是不能通过,求高手帮忙
#include
#include
#include
#include
using namespace std;
struct member
{
int num;
int time;
}Member[100];
bool operator<(member a, member b)
{
return a.time < b.time;
}
int score[100];
void main()
{
void mysort(vector
m,int S);
int n;
string str;
int p;
int h;
int m;
int s;
int i;
while(cin>>n&&n>=0)
{
vector
rank4;
vector
rank3;
vector
rank2;
vector
rank1;
for(i=0;i
<n;i++)
{
cin>>p>>str;
if(p==5){score[i]=100;continue;}
if(p==0){score[i]=50;continue;}
sscanf(str.c_str(),"%d:%d:%d",&h,&m,&s);
s=h*3600+m*60+s;
Member[i].time=s;
Member[i].num=i;
if(p==4)
{
rank4.push_back(Member[i]);
score[i]=90;
}
if(p==3)
{
rank3.push_back(Member[i]);
score[i]=80;
}
if(p==2)
{
rank2.push_back(Member[i]);
score[i]=70;
}
if(p==1)
{
rank1.push_back(Member[i]);
score[i]=60;
}
}
mysort(rank4,95);
mysort(rank3,85);
mysort(rank2,75);
mysort(rank1,65);
for(i=0;i
<n;i++)
cout<
<score[i]<<endl;
cout<
<endl;
memset(score,0,sizeof(score));
}
}
void mysort(vector
m,int S)
{
int i;
int j;
int k;
if(m.size()==1)
{
score[m[0].num]=S;
return;
}
sort(m.begin(),m.end());
for(i=0;i
<m.size() 2;i++)
{
score[m[i].num] = S;
}
}
</endl;
</score[i]<<endl;
</n;i++)
</n;i++)
请教杭电OJ的题,C语言,题目如题,代码如下,杭电OJ上一直提示时间超时T^T,请问怎么改?
我觉得你把题目意思理解错了,每一行的第一个数据是代表求和的数据的个数为N,后面的数据个数为N,所以:
while(scanf("%d",&num[i])&&(num[i]!=a)){
i++;}
应该变为:
while((i<=a)&&scanf("%d",&num[i])){
i++;}
并且,
for(j=0;j
<i;j++){
sum=sum+num[j];
}
j的起始值应该从1开始
</i;j++){
杭电OJ题目2034,我的答案正确却总是wrong answer
#include "stdio.h"int main(){ int n,m,i,j,temp,flag; int a[220],b[100]; while(scanf("%d %d",&n,&m)) { temp=0; flag=0; if(n==0 && m==0) break; for(i=0;i
<n+m;i++) scanf("%d",&a[i]); for(i="0;i<temp;i++)" { for(j="i;j
b[j]) n=b[j],b[j]=b[i],b[i]=n; } } for(i=0;i
<temp;i++) if(i="=0" || b[i] !="b[i-1])" printf("%d ",b[i]); printf("\n"); } return 0;}
把代码发出来吧 链接点不进去
你的代码是好用的啊
对于acm的题目,我觉得如果在自己的电脑上运行对了,提交错误,怎么找出来错误,第一,反复读题目,看自己的程序中都满足题目中的要求没有,有时候输出的形式也要注意一下,有可能是要你把所有需要输入的数据都输进去,然后在吧所有输入的处理后再输出,有可能也是输入一个就处理一个,这样的情况也有的,需要注意下,再就是定义的数组范围,也是一个容易出错的,这些是我做题发现的一些,一般提交错误,大多数情况还是算法的问题,因为在检查你的程序的时候,是很多数据,而且边界条件也要满足,自己多测试下,看看算法对不对,自己喜欢它,就坚持下去。
杭电的输入要判断文件结束.详见杭电acm主页第一栏F.A.Q
P.S.新用一个OJ时最好先读一遍它的FAQ,了解它的提交规则,避免走许多弯路啊...
只能帮你到这儿了。
PS:昨天你采纳的就是我,你写的真的很复杂。只需要在第二个集合中寻找第一个集合中的元素判断是否输出就可以。
其实这种事情上面没必要坚持什么,你看到比自己写的好的代码就抄过来,放下原来自己觉得对但实际上没人认同的算法。才会进步啊。
oj题库怎么查看答案
登录进去,查找搜索1、打开putty后,输入 烟台大学OJ系统 服务器的IP地址: 202.194.119.110,输入端口号:6666,选择SSH连接方式,2、点击open即可进入登录页面 3、在登录页面输入用户名,回车确认,然后输入密码,再回车确认即可登录成功 4、登录成功后,即可通过 putty 将代码提交到OJ平台。OJ是Online Judge系统的简称,用来在线检测程序源代码的正确性。著名的OJ有RQNOJ、URAL等。国内著名的题库有北京大学题库、浙江大学题库等。国外的题库包括乌拉尔大学、瓦拉杜利德大学题库等。