ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#_转换这类"[[0,1,100],[1,2,100],[0,2,500]]"数组字符串为数组_Newtonsoft.Json

2021-08-25 01:04:29  阅读:379  来源: 互联网

标签:Newtonsoft Console WriteLine int dst flights 数组 var 100


787. K 站中转内最便宜的航班

 

有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 pricei 抵达 toi。

现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到出一条最多经过 k 站中转的路线,使得从 src 到 dst 的 价格最便宜 ,并返回该价格。 如果不存在这样的路线,则输出 -1。

 

事例1:

输入:
n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]
src = 0, dst = 2, k = 1
输出: 200
解释:
城市航班图如下:

从城市 0 到城市 2 在 1 站中转以内的最便宜价格是 200,如图中红色所示。

 

事例1:

输入:
n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]
src = 0, dst = 2, k = 0
输出: 500
解释:
城市航班图如下


从城市 0 到城市 2 在 0 站中转以内的最便宜价格是 500,如图中蓝色所示。

using System;
// using System.Security.AccessControl;
using Newtonsoft.Json; // JsonConvert
// using Newtonsoft.Json.Linq; // JObject

namespace ConsoleAppDemoOne
{
    public static class ProgramOne
    {
        public static void Main(string[] args)
        {
            var nInput = Console.ReadLine();
            var flightsInput = Console.ReadLine();
            var srcInput = Console.ReadLine();
            var dstInput = Console.ReadLine();
            var kInput = Console.ReadLine();

            var n = Convert.ToInt32(nInput);
            var scr = Convert.ToInt32(srcInput);
            var dst = Convert.ToInt32(dstInput);
            var k = Convert.ToInt32(kInput);
            Console.WriteLine(n.GetType());
            
            // /*sing Newtonsoft.Json; // JsonConvert
            // using Newtonsoft.Json.Linq; // JObject*/
            // var flights = (JObject)JsonConvert.DeserializeObject(flightsInput);
            // Console.WriteLine(flights);
            // Console.WriteLine(flights.GetType());

            try
            {
                var flights = JsonConvert.DeserializeObject<int[][]>(flightsInput ?? string.Empty);
                Console.WriteLine(flights);
                if (flights == null) return;
                Console.WriteLine(flights.GetType());

                var sl = new Solution();
                Console.WriteLine(sl.FindCheapestPrice(n, flights, scr, dst, k));

                // Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
    }

    public class Solution
    {
        public int FindCheapestPrice(int n, int[][] flights, int src, int dst, int k)
        {
            const int inf = 10000 * 101 + 1;
            // int[,] f = new int[k + 2, n];
            var f = new int[k + 2, n];
            for (var i = 0; i < k + 2; ++i)
            {
                for (var j = 0; j < n; ++j)
                {
                    f[i, j] = inf;
                }
            }

            f[0, src] = 0;
            for (var t = 1; t <= k + 1; ++t)
            {
                foreach (var flight in flights)
                {
                    int j = flight[0], i = flight[1], cost = flight[2];
                    f[t, i] = Math.Min(f[t, i], f[t - 1, j] + cost);
                }
            }

            var ans = inf;
            for (var t = 1; t <= k + 1; ++t)
            {
                ans = Math.Min(ans, f[t, dst]);
            }

            return ans == inf ? -1 : ans;
        }
    }
    
}
View Code
try
{
    var flights = JsonConvert.DeserializeObject<int[][]>(flightsInput ?? string.Empty);
    Console.WriteLine(flights);
    if (flights == null) return;
    Console.WriteLine(flights.GetType());

    var sl = new Solution();
    Console.WriteLine(sl.FindCheapestPrice(n, flights, scr, dst, k));

    // Console.ReadKey();
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}

 

 

标签:Newtonsoft,Console,WriteLine,int,dst,flights,数组,var,100
来源: https://www.cnblogs.com/zhangwenzhi/p/15183157.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有