gpt4 book ai didi

c# - 检查数组中的直线序列

转载 作者:行者123 更新时间:2023-11-30 13:54:54 24 4
gpt4 key购买 nike

我正在尝试编写一个方法 (public bool Seq_Check(int[] A, int k)) 检查数组 A 是否包含数字 1 ,2,...,k(从 1k 的每个数字至少一次)并且没有其他数字。

因此,对于 myArr1myArr2,它应该分别返回 truefalse,它的确如此,但错误地显示了第三个数组的 true

有人可以帮我找出这里的错误吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ArrayChecker
{
class Program
{
/// The program's main entry point.
static void Main(string[] args)
{
// Input arrays are assumed to be in non-decreasing order.
int[] myArr1 = new int[] { 1, 1, 2, 3, 3 };
int[] myArr2 = new int[] { 1, 1, 3 };
int[] myArr3 = new int[] { 1, 1, 1, 2, 3, 4, 5, 6, 1 };

// Printing to console True & False respectively.
Console.WriteLine( Seq_Check(myArr1, 3) );
Console.WriteLine( Seq_Check(myArr2, 2) );
Console.WriteLine( Seq_Check(myArr3, 6) );

// Prevent the console window from closing.
Console.ReadLine();
}


/// This method checks whether array A contains numbers 1,2,...,k
/// (every number from 1 to k exactly once) and no other numbers.
public static bool Seq_Check(int[] A, int k)
{
int n = A.Length;

for (int i = 0; i < n-1; i++)
{
if ( A[i]+1 < A[i+1] )
return false;
}

if ( A[0] != 1 && A[n-1] != k )
return false;
else
return true;
}
}
}

最佳答案

试试这个。

        public static bool Seq_Check(int[] A, int k)
{
int n = A.Length;
if (A[0] != 1 || A[n - 1] != k)//no need to go through array if it is already bad
return false;

for (int i = 0; i < n - 1; i++)
{
if (A[i] + 1 < A[i + 1])
return false;
}
return true;
}

您使用的是 && 而不是 ||当检查 A[0]=1 和 A[n-1]=k 时。这意味着只要任一条件为真,该函数就会返回真。您希望它是,如果任一条件为真,该函数应返回 false。

关于c# - 检查数组中的直线序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38467146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com