【发布时间】:2015-08-20 03:16:07
【问题描述】:
我正在尝试解决 SPOJ 问题 SUMFOUR....我在测试用例 9 http://www.spoj.com/problems/SUMFOUR/ 上获得 TLE
那么,我的代码的哪一部分必须编辑以及如何编辑?这里 N
#include <iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<map>
#include<vector>
using namespace std;
int main()
{
int a[4005][5],n;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=4;j++)
scanf("%d",&a[i][j]);
int k=0;
for(int i=1;i<=n;i++)
{ int p=a[i][1];
for(int j=1;j<=n;j++)
{ b.push_back(p+a[j][2]);
k++;
}
}
k=0;
for(int i=1;i<=n;i++)
{ int p=a[i][3];
for(int j=1;j<=n;j++)
{ c.push_back(p+a[j][4]);
k++;
}
}
sort(b.begin(),b.end());
int cnt=0;
for(int j=0;j<k;j++)
if(find(b.begin(),b.end(),-c[j])!=b.end() )
cnt=cnt+count(b.begin(),b.end(),-c[j]) ;
printf("%d\n",cnt);
return 0;
}
【问题讨论】:
-
如果您使用 C++ 编写代码,请使用从 0 到 n - 1 的 C++ 样式索引作为向量。
for(int i=1;i<=n;i++)看起来很尴尬。 -
1) 请一致地缩进代码以提高可读性。建议在每个左大括号 '{' 后留 4 个空格,并在每个右大括号 '}' 之前取消缩进。注意由于不同的环境有不同的制表位/宽度,从不使用制表符进行缩进。 2)使用空行来偏移代码块以提高可读性。 3) 当请求用户输入时 (cin >> n) 总是以 cout
-
1) 为什么要混合使用 'cin' 和 'scanf()' ? 2) 你真的希望用户输入多达 16000 个整数值吗? 3) 始终检查 scanf() 的返回值,而不是参数值,以确保操作成功。
-
因为这是 C++,不应该像这样定义数组:'std::vector
myvector (n);'而不是'int myvector[n]'?
标签: c++ c algorithm c++11 maps