获得此计划结果的最短且最有效的方法是什么?

时间:2014-09-17 13:32:15

标签: c++

这是代码: 有没有办法提高效率? 效率是让我的情况更短更快

#include <iostream>
int main() 
{
 int i, n, a[10], b[10];
 cin >> n;

 for (i = 0; i < n; i++) 
 {
  cin >> a[i] >> b[i];
 }

 for (i = 0; i < n; i++) 
 {
  if (a[i] > b[i])
  cout << "Participant 1 wins\n";
  else
  cout << "Participant 2 wins\n";
 }

 return 0;
}

1 个答案:

答案 0 :(得分:4)

首先,您的代码无法在大多数计算机上编译。原因? coutcin是标准命名空间std的一部分,这意味着除非使用适当的命令,否则无法访问它们。这可以通过两种方式完成:

  • std::cout而不是cout。这告诉编译器您要访问对象cout,它是标准命名空间的一部分
  • 在主体之前,写下using namespace std;。这将使您可以直接访问属于标准命名空间的所有内容,并且可以在您包含的标题中找到。

现在让我们谈谈效率:

  • 您不必使用数组。您可以在从标准输入读取数据时处理数据。 这会将空间复杂度从O(N)降低到O(1)。换句话说,你将拥有恒定的空间。
  • 如果您希望代码执行速度更快,并且熟悉C编程语言,则可以使用C风格的输入和输出。它不太可读,但效率更高,速度更快,因为它是用汇编语言(机器语言)实现的。
  • 您可以使用内联if-else语句缩短代码的长度。请注意,这是一个好习惯,因为它会使您的代码非常难以阅读。

全部放在一起:

#include <cstdio>
int main() {
  int i, n, a, b;
  scanf("%d", &n);
  for(i=0; i<n; ++i) {
    scanf("%d %d", &a, &b);
    printf("Participant %d wins\n", (a > b) ? 1 : 2);
  }
  return 0;
}
相关问题