Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找二维矩阵中最左和最右角之间的最短路径_Java_Algorithm_Shortest Path - Fatal编程技术网

Java 查找二维矩阵中最左和最右角之间的最短路径

Java 查找二维矩阵中最左和最右角之间的最短路径,java,algorithm,shortest-path,Java,Algorithm,Shortest Path,我在寻找矩阵中起始点[0][0]和结束点[1][2]之间的最短路径时遇到问题 例如 每个单元格中的值表示穿过每个点所需的成本。您可以移动到其右侧单元格或其下方的单元格。不允许对角移动 我应该使用哪种算法,像BFS,dijkstra (一) (四) (五) (六) $(函数(){ $(“#提交”)。单击( 函数(){ $(“#网格”).jqGrid( { url:'Order1.spring?AccId='1!' +$('#AccId').val(), contentType:'应用程序/jso

我在寻找矩阵中起始点[0][0]和结束点[1][2]之间的最短路径时遇到问题

例如

每个单元格中的值表示穿过每个点所需的成本。您可以移动到其右侧单元格或其下方的单元格。不允许对角移动

我应该使用哪种算法,像BFS,dijkstra

(一)

(四)

(五)

(六)


$(函数(){
$(“#提交”)。单击(
函数(){
$(“#网格”).jqGrid(
{
url:'Order1.spring?AccId='1!'
+$('#AccId').val(),
contentType:'应用程序/json',
数据类型:“json”,
colNames:['订单Id','客户Id',
'帐户Id'、'订单Id'、'订单日期',
“订单金额”、“订单单位”,
“订单类型”],
colModel:[{
名称:“ORDD”,
索引:“ordId”,
隐藏:是的,
}, {
名称:“cusId”,
索引:“cusId”,
}, {
名称:“accId”,
索引:“accId”,
}, {
名称:“ORDD”,
索引:“ordId”,
}, {
名称:“ordDate”,
索引:“ordDate”,
}, {
名称:'ordAmount',
索引:'ordAmount',
}, {
名称:'ordUnits',
索引:'ordUnits',
}, {
名称:“ordType”,
索引:“ordType”,
}
],
viewrecords:是的,
rowNum:10,
行列表:[10,20,40,60],
寻呼机:“#寻呼机”,
标题:"订单摘要",,
jsonReader:{
根:“行”,
第页:“第页”,
总计:“总计”,
记录:“记录”,
重复项:false,
细胞:“细胞”,
id:“ORDD”
}
});
$(“#grid”).jqGrid('navGrid','#pager'{
编辑:false,
加:错,,
戴尔:错,
搜索:正确
},{},{},{},{},{//搜索
sopt:['cn','eq','ne','lt','gt','bw','ew'],
closeOnEscape:没错,
多重搜索:对,
closeAfterSearch:对
});
});
});
输入AccId
从日期开始
迄今为止
输入交易类型

简易方法使用动态规划思想。 以下是主要逻辑(O(N^2)):


它也可以使用Dijkstra和任何其他最短路径算法来解决。但是DP是最简单的方法。

easy方法使用动态规划思想。 以下是主要逻辑(O(N^2)):


它也可以使用Dijkstra和任何其他最短路径算法来解决。但是DP是最简单的方法。

easy方法使用动态规划思想。 以下是主要逻辑(O(N^2)):


它也可以使用Dijkstra和任何其他最短路径算法来解决。但是DP是最简单的方法。

easy方法使用动态规划思想。 以下是主要逻辑(O(N^2)):


它也可以使用Dijkstra和任何其他最短路径算法来解决。但是DP是最简单的。

我将尝试使用你提到的动态规划。我将尝试使用你提到的动态规划。我将尝试使用你提到的动态规划。我将尝试使用你提到的动态规划。
------------
3  | 44 | 75 |
------------
21 | 98 | 60 | 
-------------
package com.oft.controller;

import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.oft.service.OverviewService;
import com.oft.valueobjects.OrderOverviewData;
import com.oft.valueobjects.OrderOverviewForm;
import com.oft.valueobjects.OrderOverviewResponse;

@Controller
@RequestMapping(value="Overview")
public class OverviewController
{
    @Autowired
    OverviewService service;

    @RequestMapping(value="Order.spring",method=RequestMethod.GET)
    public String getOrderView(ModelMap map,HttpSession session)
    {
/*      OrderOverviewForm form=new OrderOverviewForm(null, null, "SELL", 0);
        List<OrderOverviewData> datas=(List<OrderOverviewData>)service.getOrderOverview(form, 1);

        for (Iterator iterator = datas.iterator(); iterator.hasNext();) {
            OrderOverviewData orderOverviewData = (OrderOverviewData) iterator.next();  
            System.out.println(orderOverviewData);
        }*/

        map.addAttribute("ViewOrders", new OrderOverviewForm());
        return "ViewOrders";
    }

    @RequestMapping(value="Order1.spring",produces="application/json")
    public @ResponseBody OrderOverviewResponse getOrderOverview(@ModelAttribute("ViewOrders")OrderOverviewForm form)
    {
        System.out.println("In overview POST"+form.getAccId());

        OrderOverviewForm order = new OrderOverviewForm();
        order.setAccId(100);

        List<OrderOverviewData> datas=(List<OrderOverviewData>)service.getOrderOverview(order, 1);

        for (Iterator iterator = datas.iterator(); iterator.hasNext();) {
            OrderOverviewData orderOverviewData = (OrderOverviewData) iterator.next();  
            System.out.println(orderOverviewData);
        }
        OrderOverviewResponse response=new OrderOverviewResponse();

        response.setPage("1");
        response.setTotal("5");
        response.setRows(datas);
        response.setRecords(String.valueOf(datas.size()));

        return response;
    }

    @RequestMapping(method=RequestMethod.GET)
    public ModelAndView getFundPriceView()
    {

        return new ModelAndView("ViewFundPrice");
    }


}
package com.oft.valueobjects;

import java.io.Serializable;
import java.util.List;

public class OrderOverviewResponse implements Serializable
{

    public String page;
    public String total;
    public String records;
    public List<OrderOverviewData> rows;
//getter and setter
    public OrderOverviewResponse() {
        super();
        // TODO Auto-generated constructor stub
    }

    public OrderOverviewResponse(String page, String total, String records,
            List<OrderOverviewData> rows) {
        super();
        this.page = page;
        this.total = total;
        this.records = records;
        this.rows = rows;
    }
    public String getPage() {
        return page;
    }
    public void setPage(String page) {
        this.page = page;
    }
    public String getTotal() {
        return total;
    }
    public void setTotal(String total) {
        this.total = total;
    }
    public String getRecords() {
        return records;
    }
    public void setRecords(String records) {
        this.records = records;
    }
    public List<OrderOverviewData> getRows() {
        return rows;
    }
    public void setRows(List<OrderOverviewData> rows) {
        this.rows = rows;
    }




}
package com.oft.valueobjects;

import java.util.Date;

public class OrderOverviewForm {

    private Date FromDate;
    private Date ToDate;
    private Integer AccId;
    private String TransactionType;
    public OrderOverviewForm() {
        super();
        // TODO Auto-generated constructor stub
    }
    public OrderOverviewForm(Date fromDate, Date toDate, Integer accId,
            String transactionType) {
        super();
        FromDate = fromDate;
        ToDate = toDate;
        AccId = accId;
        TransactionType = transactionType;
    }
    public Date getFromDate() {
        return FromDate;
    }
    public void setFromDate(Date fromDate) {
        FromDate = fromDate;
    }
    public Date getToDate() {
        return ToDate;
    }
    public void setToDate(Date toDate) {
        ToDate = toDate;
    }
    public Integer getAccId() {
        return AccId;
    }
    public void setAccId(Integer accId) {
        AccId = accId;
    }
    public String getTransactionType() {
        return TransactionType;
    }
    public void setTransactionType(String transactionType) {
        TransactionType = transactionType;
    }
    @Override
    public String toString() {
        return "OrderOverviewForm [AccId=" + AccId + ", TransactionType="
                + TransactionType + "]";
    }


}
package com.oft.valueobjects;

import java.math.BigDecimal;
import java.util.Date;

public class OrderOverviewData {
private Integer CusId;
private Integer AccId;
private Integer OrdId;
private Date OrdDate;
private String OrdType;
private BigDecimal OrdAmount;
private BigDecimal OrdUnits;
private Integer FundId;
public OrderOverviewData() {
    super();
    // TODO Auto-generated constructor stub
}
public OrderOverviewData(Integer cusId, Integer accId, Integer ordId,
        Date ordDate, String ordType, BigDecimal ordAmount,
        BigDecimal ordUnits, Integer fundId) {
    super();
    CusId = cusId;
    AccId = accId;
    OrdId = ordId;
    OrdDate = ordDate;
    OrdType = ordType;
    OrdAmount = ordAmount;
    OrdUnits = ordUnits;
    FundId = fundId;
}
public Integer getCusId() {
    return CusId;
}
public void setCusId(Integer cusId) {
    CusId = cusId;
}
public Integer getAccId() {
    return AccId;
}
public void setAccId(Integer accId) {
    AccId = accId;
}
public Integer getOrdId() {
    return OrdId;
}
public void setOrdId(Integer ordId) {
    OrdId = ordId;
}
public Date getOrdDate() {
    return OrdDate;
}
public void setOrdDate(Date ordDate) {
    OrdDate = ordDate;
}
public String getOrdType() {
    return OrdType;
}
public void setOrdType(String ordType) {
    OrdType = ordType;
}
public BigDecimal getOrdAmount() {
    return OrdAmount;
}
public void setOrdAmount(BigDecimal ordAmount) {
    OrdAmount = ordAmount;
}
public BigDecimal getOrdUnits() {
    return OrdUnits;
}
public void setOrdUnits(BigDecimal ordUnits) {
    OrdUnits = ordUnits;
}
public Integer getFundId() {
    return FundId;
}
public void setFundId(Integer fundId) {
    FundId = fundId;
}
@Override
public String toString() {
    return "OrderOverviewData [CusId=" + CusId + ", AccId=" + AccId
            + ", OrdId=" + OrdId + ", OrdDate=" + OrdDate + ", OrdType="
            + OrdType + ", OrdAmount=" + OrdAmount + ", OrdUnits=" + OrdUnits
            + ", FundId=" + FundId + "]";
}




}
CREATE FUNCTION GetHoldings(CustId INT)
RETURNS TABLE(CusId INT,AccId INT,FundId INT,FundName VARCHAR(25),TotalAmount decimal(10,2),Price decimal(10,2),PriceDate DATE,Currency VARCHAR(3))
READS SQL DATA
BEGIN ATOMIC

DECLARE CurDate DATE;

SET CurDate = CURRENT_DATE;

RETURN TABLE
(
select a.CusId, t.AccId ,f.FundId,f.FundName,t.TotalAmount,fp.Price,fp.PriceDate,f.Currency 
FROM Account as a
INNER JOIN (select AccId,FundId,SUM(OrdAmount) AS TotalAmount from ORDERS GROUP BY AccId,FundId order by AccId) t
ON a.AccId=t.AccId
INNER JOIN Fund as f
ON f.FundId=t.FundId
INNER JOIN FundPrice as fp
ON f.FundId=fp.FundId AND fp.PriceDate = CurDate
WHERE a.CusId = CustId

);

END
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript"
    src="<c:url value="/resources/js/jquery-1.11.1.min.js"></c:url>"></script>
<script type="text/javascript"
    src="<c:url value="/resources/js/jquery.jqGrid.min.js"></c:url>"></script>
<script type="text/javascript"
    src="<c:url value="/resources/js/jquery-ui.min.js"></c:url>"></script>

<link type="text/css" rel="stylesheet"
    href="<c:url value="/resources/css/jquery-ui.min.css"></c:url>" />
<link type="text/css" rel="stylesheet"
    href="<c:url value="/resources/css/ui.jqgrid.css"></c:url>" />


<script type="text/javascript">
    $(function() {
        $("#submit").click(
                function() {

                    $("#grid").jqGrid(
                            {

                                url : 'Order1.spring?AccId='
                                        + $('#AccId').val(),
                                contentType : 'application/json',
                                datatype : 'json',
                                colNames : [ 'Order Id', 'Customer Id',
                                        'Account Id', 'Order Id', 'Order Date',
                                        'Order Amount', 'Order Units',
                                        'Order Type' ],
                                colModel : [ {
                                    name : 'ordId',
                                    index : 'ordId',
                                    hidden : true,
                                }, {
                                    name : 'cusId',
                                    index : 'cusId',
                                }, {
                                    name : 'accId',
                                    index : 'accId',
                                }, {
                                    name : 'ordId',
                                    index : 'ordId',
                                }, {
                                    name : 'ordDate',
                                    index : 'ordDate',
                                }, {
                                    name : 'ordAmount',
                                    index : 'ordAmount',
                                }, {
                                    name : 'ordUnits',
                                    index : 'ordUnits',
                                }, {
                                    name : 'ordType',
                                    index : 'ordType',
                                }

                                ],
                                viewrecords : true,
                                rowNum : 10,
                                rowList : [ 10, 20, 40, 60 ],
                                pager : '#pager',
                                caption : 'Orders Summary',
                                jsonReader : {
                                    root : "rows",
                                    page : "page",
                                    total : "total",
                                    records : "records",
                                    repeatitems : false,
                                    cell : "cell",
                                    id : "ordId"
                                }
                            });

                    $("#grid").jqGrid('navGrid', '#pager', {
                        edit : false,
                        add : false,
                        del : false,
                        search : true
                    }, {}, {}, {}, { // search
                        sopt : [ 'cn', 'eq', 'ne', 'lt', 'gt', 'bw', 'ew' ],
                        closeOnEscape : true,
                        multipleSearch : true,
                        closeAfterSearch : true
                    });

                });

    });
</script>

</head>
<body>
    <form:form id="target" commandName="ViewOrders">

        <table>
            <tr>
                <td>Enter AccId</td>
                <td><form:input path="AccId" id="AccId" />
            </tr>
            <tr>
                <td>From Date</td>
                <td><input type="text" id="FromDate" /></td>
                <td>To Date</td>
                <td><input type="text" id="ToDate" /></td>
            </tr>
            <tr>
                <td>Enter Transaction Type</td>
                <td><input type="text" id="TransactionType" /></td>
            </tr>
            <tr>
                <td colspan="4"><input type="button" id="submit"
                    value="Get Orders"></td>
            </tr>
        </table>
    </form:form>

    <div id="jqgrid">
        <table id="grid"></table>
        <div id="pager"></div>
    </div>

</body>

</html>
dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + cost[i][j]