竞赛讨论区 > 面试算法题求解
头像
牛客116888188号
发布于 2020-06-12 14:18
+ 关注

面试算法题求解

几道算法题求大神解:C++/python,有偿

一组公司进行了大量交易,现在是时候解决账单了。 公司之间互相支付,所以他们都希望得到他们最终应该拥有的钱。但是,当几家公司彼此拥有资金时,可能会减少交易数量。 例如,如果A欠B公司100美元,B欠C公司40美元,C欠A公司60美元,那么它是可能的分别通过A和C支付B$40和$20来结算所有账单,因此只进行两笔交易而不是三笔交易。 鉴于公司之间的初始交易,确定解决所有账单所需的最少交易数量。


输入:

1.一行包含两个整数n,公司数量,1≤n≤20,m,交易数量,0≤m≤1000。

2.m行,每个行有三个整数i,j,t,其中0≤i,j,<n和1≤t≤1000,表示公司j 欠i公司 i的数量。

输出:一个整数,等于结算所有账单所需的交易数量。

时间和内存限制:1000毫秒,256 MB


样例1:

INPUT:

4 2

0 1 1

2 3 1

(1欠0公司 $1;3欠2公司 $1)

OUTPUT:

2


样例2:

INPUT:

5 5

0 1 3

1 2 3

2 3 3

3 4 3

4 0 3


OUTPUT:

0



-------------------------------------------------------------

你玩过2048游戏吗? 游戏在带有编号格子中开始。 当两块格子具有相同数量的数字时,它们会合并为一个数字。 我们将在1个维度上玩2048。 规则就像下面一样。

1.我们在一维的n个格子(数字)开始。

2.我们可以合并两个格子,如果它们相邻且相等,则生成单个格子,其值更高。 也就是说,如果我们有A(i)=A(i+1),它们可以合并为具有值A(i)+1的单个格子。


目标是找到一个合并格子的顺序,以便最终获得最少的格子数量

例子:我们有一行格子:

3,3,4,4,4,3,3

如果先将两组3合并 则会得到:4,4,4,4,4

再合并两组4: 5,5,4

合并5: 6,4

则最后剩下的最小个数为2



样例:

输入:第一行包含一个整数n(1≤n≤500),等于开头的格子。 第二行包含n个整数a1,a2,...,an,(1≤ai≤1000)表示初始格子的值。


输出:整数-游戏结束时最小可能的格子数。

--------------------------

INPUT:

7

3 3 4 4 4 3 3

OUTPUT:

2





全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐