C#练习题答案: 简单的乐趣#171:获得糖果位置【难度:2级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战

简单的乐趣#171:获得糖果位置【难度:2级】:

答案1:

namespace myjinxin
{
    using System;   
     public class Kata
    {
        public int[] GetCandyPosition(int n, int r, int c, int candy)
        {
            if (candy > n) return new int[] { -1, -1, -1 };
            int tableNr = (int)Math.Ceiling(candy * 1.0 / (r * c));
            candy -= ((tableNr - 1) * (r * c));
            int maks = c * r + 1;
            int row = 0;
            while(maks > 0)
            {
                if (candy >= maks - c) break;
                else { maks -= c; row++; }
            }
            while (candy > c) candy -= c;
            int szereg = c - candy;
            return new int[] { tableNr, row, szereg };
        }
    }
}

答案2:

namespace myjinxin
{
    using System;
    
    public class Kata
    {
        public int[] GetCandyPosition(int n, int r, int c, int candy)
        {
            if (n < candy) return new[] { -1, -1, -1 };
            var p = candy % (r * c);
            return new[] { (int)Math.Ceiling(candy / (r * c * 1.0)), (int)Math.Ceiling(p / (c * 1.0)) == 0 ? 0 : r - (int)Math.Ceiling(p / (c * 1.0)), p % c == 0 ? 0 : c - (p % c) };
        }
    }
}

答案3:

namespace myjinxin
{
    using System;
    
    public class Kata
    {
        public int[] GetCandyPosition(int n, int r, int c, int candy){
          //coding and coding..
          int[] candyPosition = new int[3];
          int arrayPos;
          int boxSize = r * c;
          if (candy > n || candy == 0){
            candyPosition = new int[]{-1,-1,-1};
          }else{
            //Box
            candyPosition[0] = (int)Math.Ceiling((double)candy/(double)boxSize);
            //reverses candy # and position in array that starts with 0
            arrayPos = boxSize - ((candy - 1) % boxSize) - 1;
            //Row
            candyPosition[1] = arrayPos  / c;
            //Column
            candyPosition[2] = arrayPos % c;
            //Test Print
            //Console.WriteLine(arrayPos);
          }
          return candyPosition;
        }
    }
    //0 ~ 1, 2, 3, 4, 5 ~ 0
}

答案4:

namespace myjinxin
{
    using System;
    
    public class Kata
    {
        public int[] GetCandyPosition(int n, int r, int c, int v)
        {
            if (v > n || v < 1) return new int[] { -1, -1, -1 };
            int rc = r * c;
            int b = --v / rc;
            v %= rc;
            return new int[] { b + 1, r - v / c - 1, c - v % c - 1 };
        }
    }
}

答案5:

namespace myjinxin
{
    using System;
    using System.Linq;
    public class Kata
    {
public int[] GetCandyPosition(int n, int r, int c, int candy){
  if(candy
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值