什么是最短、最有效的方法来获得这个程序的结果

What is the shortest and most effecient way to get the result for this program?

本文关键字:程序 结果 方法 有效 什么      更新时间:2023-10-16

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

#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 winsn";
  else
  cout << "Participant 2 winsn";
 }
 return 0;
}

首先,您的代码不会在大多数机器中编译。原因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 winsn", (a > b) ? 1 : 2);
  }
  return 0;
}