C#练习题答案: 简单有趣#157:计算三角形【难度:1级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战

简单有趣#157:计算三角形【难度:1级】:答案1:namespace myjinxin{ using System; public class Kata { public int CountingTriangles(int[] V){ int triangleCount = 0; if (V.Leng...
摘要由CSDN通过智能技术生成

简单有趣#157:计算三角形【难度:1级】:

答案1:

namespace myjinxin
{
    using System;
    
    public class Kata
    {
        public int CountingTriangles(int[] V){
          int triangleCount = 0;
          if (V.Length < 3)
            return 0;
          for (int i = 0; i < V.Length-2; i++)
          {
            for (int j = i+1; j < V.Length-1; j++)
            {
              for (int h = j+1; h < V.Length; h++)
              {
                 if (V[i]<V[j]+V[h] &amp;&amp; V[j]<V[i]+V[h] &amp;&amp; V[h]<V[i]+V[j])
                   triangleCount++;
              }
            }
          }
          return triangleCount;          
        }
    }
}

答案2:

namespace myjinxin
{
    using System;
    using System.Linq;
    public class Kata
    {
public int CountingTriangles(int[] V){
  var arr=V.OrderBy(x=>x).ToArray();
  var r=0;
  for(var i=0;i<arr.Length-2;i++){
    for(var j=i+1;j<arr.Length-1;j++){
      int sum=arr[i]+arr[j],k=j+1;
      while(k<arr.Length&amp;&amp;arr[k]<sum) {r++;k++;}
    }
  }
  return r;
} 

    }
}

答案3:

namespace myjinxin {
    public class Kata {
        public int CountingTriangles( int[] V ) {
            var result = 0;
            for ( int i = 0; i < V.Length; i++ ) {
                var a = V[ i ];
                for ( int j = i + 1; j < V.Length; j++ ) {
                    var b = V[ j ];
                    for ( int k = j + 1; k < V.Length; k++ ) {
                        var c = V[ k ];
                        if ( a + b > c &amp;&amp; b + c > a &amp;&amp; a + c > b ) {
                            result += 1;
                        }
                    }
                }
            }
            return result;
        }
    }
}

答案4:

namespace myjinxin
{
  using System;
    
  public class Kata
  {
    public int CountingTriangles(int[] V)
    {
      int count = 0;
      for (int i=0; i<V.Length-2; i++)
      {
        for (int j=i+1; j<V.Length-1; j++)
        {
          for (int k=j+1; k<V.Length; k++)
          {
            if (CheckTriangle(V[i], V[j], V[k]))
              count += 1;
          }
        }
      }
      return count;
    }
    public static bool CheckTriangle(int a, int b, int c)
    {
      return a + b > c &amp;&amp; a + c > b &amp;&amp; b + c > a;
    }
  }
}

答案5:

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

namespace myjinxin
{
    public class Kata
    {
        public int CountingTriangles(int[] V)
        {
            int result = 0;
            var total = V.ToList();
            for (int i = 0; i < total.Count; i++)
            {
                var x = total[i];
                var exceptX = new List<int>(total);
                exceptX = total.Skip(i + 1).ToList();

                for (int j = 0; j < exceptX.Count; j++)
                {
                    var y = exceptX[j];
                    var exceptXY = new List<int>(exceptX);
                    exceptXY = exceptX.Skip(j + 1).ToList();

                    for (int k = 0; k < exceptXY.Count; k++)
                    {
                        var z = exceptXY[k];

                        if (CanMakeTriangle(x, y, z))
                        {
                            result += 1;
                        }
                    }
                }
            }

            return result;
        }

        private bool CanMakeTriangle(int x, int y, int z)
        {
            if (x >= y &amp;&amp; x >= z &amp;&amp; x < y + z)
            {
                return true;
            }

            if (y >= z &amp;&amp; y >= x &amp;&amp; y < x + z)
            {
                return true;
            }

            if (z >= y &amp;&amp; z >= x &amp;&amp; z < y + x)
            {
                return true;
            }

            return false;
        }
    }
}

答案6:

namespace myjinxin
{
    using System;
    
    public class Kata
    {
        public int CountingTriangles(int[] V)
        {
          int tri_count = 0;
          int[] sides = new int[3];
          for (int i = 0; i < V.Length - 2; ++i)
          {
            for (int j = i + 1; j < V.Length - 1; ++j)
            {
              for (int k = j + 1; k < V.Length; ++k)
              {
                sides[0] = V[i];
                sides[1] = V[j];
                sides[2] = V[k];
                Array.Sort(sides);
                if (sides[2] < sides[0] + sides[1])
                {
                  ++tri_count;
                }
              }
            }                   
          }
          return tri_count;
        }
    }
}

答案7:

namespace myjinxin
{
    using System;   
        public class Kata
    {
        public int CountingTriangles(int[] v)
        {
            int res = 0;
            for(int i = 0; i < v.Length - 2; i++)
            {
                for(int j = i + 1; j < v.Length - 1; j++)
                {
                    for(int k = j + 1; k < v.Length; k++)
                    {
                        if ((v[i] < v[j] + v[k]) &amp;&amp; (v[j] < v[i] + v[k]) &amp;&amp; (v[k] < v[i] + v[j])) res++;
                    }
                }
            }
            return res;
        }
    }
    }

答案8:

namespace myjinxin
{
    using System;
    
    public class Kata
    {
        public int CountingTriangles(int[] V)
        {
            var count = 0;
            for (int i = 0; i < V.Length; i++)
            {
                for (int j = i + 1; j < V.Length; j++)
                {
                    for (int k = j + 1; k < V.Length; k++)
                    {
                        var a = V[i];
                        var b = V[j];
                        var c = V[k];
                        if (a + b > c &amp;&amp; a + c > b &amp;&amp; b + c > a) count++;
                    }
                }
            }
            return count;
        }
    }
}

答案9:

namespace myjinxin
{
    public class Kata
    {
        public int CountingTriangles(int[] V)
        {
            var counter = 0;
            var i = 0;
            var j = 1;
            var k = 2;

            while (true)
            {
                if (IsTriangle(V[i], V[j], V[k]))
                    counter++;

                k++;
                if (k >= V.Length)
                {
                    j++;
                    k = j + 1;
                    if (k >= V.Length)
                    {
                        i++;
                        j = i + 1;
                        k = j + 1;
                        if (k >= V.Length)
                            break;
                    }
                }
            }

            return counter;
        }

        private bool IsTriangle(int i, int j, int k)
        {
            return i + j > k &amp;&amp; j + k > i &amp;&amp; i + k > j;
        }
    }
}

答案10:

namespace myjinxin
{
    using System;
    
    public class Kata
    {
        public int CountingTriangles(int[] V){
          var numberOfWays = 0;
            Array.Sort(V);

            for (int i = 0; i <= V.Length - 3; i++)
            {
                for (int j = i + 1; j <= V.Length - 2; j++)
                {
                    for (int k = j + 1; k <= V.Length - 1; k++)
                    {
                        if ((V[i] + V[j]) > V[k])
                        {
                            numberOfWays++;
                        }
                    }
                    
                }
            }

            return numberOfWays;
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值