在线法官未接受代码
Code not being accepted by online judge
我刚刚完成初级编程,正在尝试一个奥林匹克竞赛中的问题。这相对容易,但我从一个在线评委的10个输入中只得到一个正确的答案。链接如下:http://opc.iarcs.org.in/index.php/problems/SORTROWS
顺便说一句,我正在使用一个外部文件进行输入,以使输入数据更容易。任何帮助或提示都将被感激。有人能提出一种快速测试随机数据的方法吗?我负担不起在比赛期间制作另一个节目来做这件事。在线评委使用g++编译器
现在是我的代码:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream ifs("test.txt");
struct ac
{
int arr[51];
int size;
}ar[1000]; //represents each line
int i,j,n,m,in,pos,k;
ac small;
ifs>>n;
for(i=0;i<n;i++)
{
for(j=0;;j++)
{
ifs>>in;
ar[i].arr[j]=in;
if(in==-1)
{
ar[i].size=j+1;
break;
}
}
}
for(i=0;i<n;i++) //using selection sort
{
pos=i;
small=ar[i];
for(j=i+1;j<n;j++)
{
for(k=0;k<ar[j].size&&k<ar[i].size;k++)
{
if(ar[i].arr[k]>ar[j].arr[k])
{
small=ar[j];
pos=j;
}
else if(ar[i].arr[k]==ar[j].arr[k]) //to continue checking
continue;
break;
}
}
ar[pos]=ar[i];
ar[i]=small;
for(m=0;m<ar[i].size-1;m++)
cout<<ar[i].arr[m]<<' ';
cout<<'n';
}
return 0;
}
我将此作为单独的答案发布,因为它与我以前的答案完全不同。
解决这个问题的更好方法是使用std::arrays的向量
std::vector< std::array<int> >
通过这种方式,您可以将每个数组视为一个单独的实体,并且根据这个C++链接,比较运算符将直接像在1D数组中一样工作。
您不需要自己循环子数组
当然,您需要在编译器中启用C++11功能。
您应该将每个子数组与当前最小的子数组进行比较,而不是与第i个子数组进行比较。
for(k=0;k<ar[j].size&&k<ar[i].size;k++)
{
if(ar[i].arr[k]>ar[j].arr[k])
尝试将其更改为:
for(k=0;k<ar[j].size&&k<ar[pos].size;k++)
{
if(ar[pos].arr[k]>ar[j].arr[k])
此外,IMO您不应该在数组中输入最后一个-1条目。
ar[i].arr[j]=in;
if(in==-1)
{
ar[i].size=j+1;
break;
}
将其更改为:
if ( in != -1 ) {
ar[i].arr[j]=in;
ar[i].size=j+1;
}
else
{
break;
}
然后你将不得不更改
for(m=0;m<ar[i].size-1;m++)
至
for(m=0;m<ar[i].size;m++)
这与其说是一个答案,不如说是一条评论,我这样发布是为了更好地格式化。除了其他人所说的:
else if(ar[i].arr[k]==ar[j].arr[k]) //to continue checking
continue;
break;
您知道,如果比较为假,break
将被执行,对吗?如果是有意的,最好以强调这一点的方式格式化,例如:
else if(ar[i].arr[k]==ar[j].arr[k]) //to continue checking
continue;
break;
或者甚至具有明确的CCD_ 2。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 为什么以下代码在在线 ide(gcc 7.2.0) 上有效,但在 ubuntu 上出现错误?
- 为什么这个C++程序在代码::块和在线 IDE 之间返回不同的结果?
- 竞争性编程 - 代码对在线编译器给出了不同的答案
- 欧拉全能函数实践代码在线判断失败
- 是否有Visual c++编译器在线,以及如何在c++和vs简单代码之间转换
- 在线法官未接受代码
- 我的代码在在线评判上获得了 TLE(超出时间限制),即使我已经根据社论进行了编码
- 可视化在线运行C++代码
- 如何在线程退出时触发代码,而不使用函数 *_at_thread_exit
- 运行时出错,在线判断上的退出代码为6
- 为什么gcc 4.7.0在这个代码上给了我一个segfault,而在线视频(gcc 4.5.1)没有
- 什么是错误的这个c++代码从URI在线判断
- 编译在在线 HTML 表单上提交的代码并使用 GCC 进行处理的过程