我一直在努力解决这个黑客行为问题(Compare the Triplets)而且我不知道我哪里错了。我的输出是正确的,但它没有通过所有hackerrank的测试用例。有什么建议?
问题:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution {
static void Main(String[] args) {
string[] tokens_a0 = Console.ReadLine().Split(' ');
int a0 = Convert.ToInt32(tokens_a0[0]);
int a1 = Convert.ToInt32(tokens_a0[1]);
int a2 = Convert.ToInt32(tokens_a0[2]);
string[] tokens_b0 = Console.ReadLine().Split(' ');
int b0 = Convert.ToInt32(tokens_b0[0]);
int b1 = Convert.ToInt32(tokens_b0[1]);
int b2 = Convert.ToInt32(tokens_b0[2]);
// Write Your Code Here
int aliceScore = 0;
int bobScore = 0;
if(a0 > b0 || a1 > b1 || a2 > b2)
{
aliceScore++;
}
if(b0 > a0 || b1 > a1 || b2 > a2)
{
bobScore++;
}
if(a0 == b0 || a1 == b1 || a2 == b2)
{
aliceScore += 0;
bobScore += 0;
}
Console.WriteLine(aliceScore +" " + bobScore);
}
}
答案 0 :(得分:1)
尝试这个...
static List<int> compareTriplets(List<int> a, List<int> b)
{
int aliceScore=0, bobScore=0, totalTests=3;
for(int i=0; i<totalTests; i++)
{
aliceScore += a[i] > b[i] ? 1 : 0;
bobScore += a[i] < b[i] ? 1 : 0;
}
return new List<int> {aliceScore, bobScore};
}
答案 1 :(得分:0)
我想我看到了问题,您需要比较每个数据点并计算每个数据点的得分。因此,比较数据点0,然后数据点1,然后数据点2。
伪代码如下,尚未测试:
if(a0 > b0)
{
aliceScore++;
}
else if(b0 > a0)
{
bobScore++;
}
if(a1 > b1)
{
aliceScore++;
}
else if(b1 > a1)
{
bobScore++;
}
if(a2 > b2)
{
aliceScore++;
}
else if(b2 > a2)
{
bobScore++;
}
答案 2 :(得分:0)
我认为这不是解决这个问题的正确方法。你应该遵循这些 下面给出的步骤。
int[] Alice = { a0, a1, a2 };
int[] Bob = { b0, b1, b2 };
int alice = 0;
int bob = 0;
for (int i = 0; i < Alice.Length; i++)
{
if (Alice[i] > Bob[i])
{
alice++;
}
if (Alice[i] < Bob[i])
{
bob++;
}
}
int[] result = { alice, bob };
return result;
答案 3 :(得分:0)
var a = new List<int> {10, 11, 12, 14, 45 };
var b = new List<int> {8, 15, 10, 12, 55 };
说列表“ a”代表爱丽丝的得分理赔,表“ b”代表鲍勃的得分。该解决方案需要比较任一列表中相同索引位置处的条目,即,从左至右,列表“ a”中的数字10位于索引0,列表“ b”中的数字8也位于索引0。处理比较任务的函数将接受两个列表作为输入,然后返回包含2个条目的列表。该函数的返回值将是Alice的得分和Bob的得分。请参阅下面的示例解决方案
void Main()
{
var a = new List<int> { 10, 11, 12, 14, 45 };
var b = new List<int> { 8, 15, 10, 12, 55 };
var result = CompareScores(a, b);
//Expected result is :
// Alice: 3
// Bob: 2
Console.WriteLine($"Alice score: {result.ElementAt(0)} Bob score: {result.ElementAt(1)}");
}
public List<int> CompareScores(List<int> alice, List<int> bob)
{
var ScoreAlice = 0;
var ScoreBob = 0;
var i = 0;
alice.ForEach(scoreAlice => {
if(scoreAlice > bob.ElementAt(i))
{
ScoreAlice ++;
}
if(scoreAlice < bob.ElementAt(i))
{
ScoreBob ++;
}
i++;
});
return new List<int> {ScoreAlice, ScoreBob };
}
在我的解决方案通知中,我使用Linq在代表Alice的List上进行迭代,对于每个元素,我都会与Bob的列表进行比较,并使用“ i”的值来标识该元素。
答案 4 :(得分:0)
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text.RegularExpressions;
using System.Text;
using System;
class Solution {
// Complete the compareTriplets function below.
static List<int> compareTriplets(List<int> a, List<int> b) {
int alice=0,bob=0;
for(int i=0;i<a.Count;i++)
{
if(a.ElementAt(i)>b.ElementAt(i))
{
alice=alice+1;
}
else if(a.ElementAt(i)<b.ElementAt(i))
{
bob=bob+1;
}
}
return new List<int> {alice,bob};
}
static void Main(string[] args) {
TextWriter textWriter = new StreamWriter(@System.Environment.GetEnvironmentVariable("OUTPUT_PATH"), true);
List<int> a = Console.ReadLine().TrimEnd().Split(' ').ToList().Select(aTemp => Convert.ToInt32(aTemp)).ToList();
List<int> b = Console.ReadLine().TrimEnd().Split(' ').ToList().Select(bTemp => Convert.ToInt32(bTemp)).ToList();
List<int> result = compareTriplets(a, b);
textWriter.WriteLine(String.Join(" ", result));
textWriter.Flush();
textWriter.Close();
}
}
答案 5 :(得分:0)
类解决方案{
// Complete the compareTriplets function below.
static List<int> compareTriplets(List<int> a, List<int> b) {
int A = 0;
int B = 0;
for(int i=0; i < a.Count; i++){
if(a[i] > b[i]){
A++;
}else if(a[i] < b[i]){
B++;
}
}
return new List<int> {A,B};
}
static void Main(string[] args) {
TextWriter textWriter = new StreamWriter(@System.Environment.GetEnvironmentVariable("OUTPUT_PATH"), true);
List<int> a = Console.ReadLine().TrimEnd().Split(' ').ToList().Select(aTemp => Convert.ToInt32(aTemp)).ToList();
List<int> b = Console.ReadLine().TrimEnd().Split(' ').ToList().Select(bTemp => Convert.ToInt32(bTemp)).ToList();
List<int> result = compareTriplets(a, b);
textWriter.WriteLine(String.Join(" ", result));
textWriter.Flush();
textWriter.Close();
}
}
答案 6 :(得分:0)
我认为这会奏效。
List<int> res = new() { 0, 0 };
for (int i = 0; i < a.Count; i++)
{
if (a[i] > b[i]) res[0]++;
else if (a[i] < b[i]) res[1]++;
}
答案 7 :(得分:0)
vector<int> compareTriplets(vector<int> a, vector<int> b)
{
int testsubjects=0;
int s=0;
int d=0;
for(int i=0;i<testsubjects;i++)
{
s+= a[i]>b[i] ? 1:0;
d+=a[i]<b[i] ? 1:0;
}
vector<int> vect = vector<int> {s,d};
return vect;
}