私はあなたが一般的な方法でこれを解決するために必要なものだと思うあなたの式は、より汎用的にすることです。
三角形については、任意の辺の合計が3番目の辺よりも大きいことを確認しています。しかし、実際に考えているのであれば、実際に行う必要があるのは、の長辺が他の2つの合計よりも小さいことを確認することです。そのケースが真であれば、他のすべてのケースも真である。
この規則は、四角形またはその他の図形にも適用されます。基本的には、最長の寝台を置いて一方の端にチェーンの一端を取り付け、チェーンの端が長い辺のもう一方の端に達するようにします。しかし
return (maxValue < sumOfOtherValues);
、あなたは私たちがしているオブジェクトのそれよりも側面の数より大きなをできるようにしたいと述べた:
ルールは、我々は数字の正確なセットを持っているかどうかをテストするのは簡単ですのいずれかがの組み合わせである場合は、true
を返します。
この場合、アイテムを並べ替えると、回答はn
アイテムの連続したグループにあります(n
はその辺の数です)。
この理由は、できるだけ短い「長い」長さとできるだけ長い「短い」長さが必要なことです。つまり、それらはすべて一緒にグループ化されます。
このようにすれば、テストするオブジェクトの長さと辺の数のリストを取る次の一般的なメソッドを作成できます。私たちは、その後、リストをソートしてからn
連続した項目のテストグループは、最初n-1
項目の合計がnth
項目以上であるかどうかを確認するために:のように、
private static bool CanCreateAShapeWithSideCount(List<double> lengths, int sideCount)
{
// Validate our input
if (sideCount < 1 || lengths == null || lengths.Count(l => l > 0) < sideCount)
{
return false;
}
// Get all lengths greater than zero and sort them
var validLengths = lengths.Where(l => l > 0).OrderBy(l => l).ToList();
// Take groups of 'sideCount' size and return 'true'
// if the longest is less than the sum of the rest
for (int i = 0; i < validLengths.Count - sideCount + 1; i++)
{
var sideGroup = validLengths.Skip(i).Take(sideCount).ToList();
var maxVal = sideGroup.Max();
if (maxVal < sideGroup.Sum() - maxVal) return true;
}
// We didn't find a match, so return false
return false;
}
は、今、私たちは私たちの他のメソッドからこのジェネリックメソッドを呼び出すことができます三角形または四角形のテスト:
private static bool IsTriangle(double sideA, double sideB, double sideC)
{
var sides = new List<double> {sideA, sideB, sideC};
return CanCreateAShapeWithSideCount(sides, 3);
}
// Test if a quadrilateral can be created from 5 lengths
private static bool IsQuadrilateral(double sideA, double sideB,
double sideC, double sideD, double sideE)
{
var sides = new List<double> { sideA, sideB, sideC, sideD, sideE };
return CanCreateAShapeWithSideCount(sides, 4);
}
ようこそ[ように]。 [尋ねる]を見直し、あなたが試したことをお見せしてください。これは宿題のように見え、宿題のサービスではありません。 – TemporalWolf
四辺形をテストする方法、または少なくとも四角形を決定するための数式はすでにありますか?それはまず答える必要があります。また、四辺形は5ではなく4辺を持ちます。 –
ちょっと、TemporalWolf。宿題ではありません。 –