我在列表中使用Python max和min函数来实现minimax算法,我需要max()或者返回的值的索引min().换句话说,我需要知道哪个移动产生了最大值(在第一个玩家的回合)或最小值(第二个玩家)值.
for i in range(9):
newBoard = currentBoard.newBoardWithMove([i / 3, i % 3], player)
if newBoard:
temp = minMax(newBoard, depth + 1, not isMinLevel)
values.append(temp)
if isMinLevel:
return min(values)
else:
return max(values)
Run Code Online (Sandbox Code Playgroud)
我需要能够返回最小值或最大值的实际索引,而不仅仅是值.
在C中的位置MIN和MAX定义,如果有的话?
实现这些的最佳方式是什么,尽可能通用和安全?(首选编译器扩展/内置主流编译器.)
如果我有一个Python字典,我如何获得包含最小值的条目的键?
我在考虑与这个min()功能有关...
鉴于输入:
{320:1, 321:0, 322:3}
Run Code Online (Sandbox Code Playgroud)
它会回来321.
我有一个巨大的向量,它有几个NA值,我试图找到该向量中的最大值(向量是所有数字),但由于NA值,我不能这样做.
如何删除NA值以便我可以计算最大值?
假设我有一个这样的表格:
name | score_a | score_b
-----+---------+--------
Joe | 100 | 24
Sam | 96 | 438
Bob | 76 | 101
... | ... | ...
Run Code Online (Sandbox Code Playgroud)
我想选择score_a和score_b的最小值.换句话说,像:
SELECT name, MIN(score_a, score_b)
FROM table
Run Code Online (Sandbox Code Playgroud)
结果当然是:
name | min
-----+-----
Joe | 24
Sam | 96
Bob | 76
... | ...
Run Code Online (Sandbox Code Playgroud)
但是,当我在Postgres中尝试这个时,我得到,"没有函数匹配给定的名称和参数类型.您可能需要添加显式类型转换." MAX()和MIN()似乎跨行而不是列.
有可能做我正在尝试的事情吗?
如何在C++中获取向量中的最大(或最小)值?
我在谷歌上看到了一些解决方案,但对我来说都没有意义:(
有人可以用简单明了的方式解释如何从矢量中获取最大值或最小值吗?假设它与数组大致相同,我错了吗?
我需要一个迭代器吗?我尝试过max_element但却一直出错?
vector<int>::const_iterator it;
it = max_element(cloud.begin(), cloud.end());
Run Code Online (Sandbox Code Playgroud)
错误:在'云'中请求成员'begin',这是非类型'int [10]'
编辑:我无法回答我自己的??? 所以我会把它放在这里......
哇,谢谢快速回复!我最终以这种方式做到了,你觉得好吗?
for (unsigned int i = 0; i < cdf.size(); i++)
if (cdf[i] < cdfMin)
cdfMin = cdf[i];
Run Code Online (Sandbox Code Playgroud)
哪里cdf是矢量.
我正在尝试使用std::min_element并std::max_element返回双精度矢量中的min和max元素.我的编译器不喜欢我目前正在尝试使用它们,我不理解错误消息.我当然可以编写自己的程序来查找最小值/最大值,但我想了解如何使用这些函数.
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char** argv) {
double cLower, cUpper;
vector<double> C;
// code to insert values in C not shown here
cLower = min_element(C.begin(), C.end());
cUpper = max_element(C.begin(), C.end());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是编译器错误:
../MIXD.cpp:84: error: cannot convert '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' to 'double' in assignment
../MIXD.cpp:85: error: cannot convert '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' to 'double' in assignment
Run Code Online (Sandbox Code Playgroud)
有人请解释我做错了什么吗?
从C++,是min和max优选超过fmin和fmax?为了比较两个整数,它们是否提供基本相同的功能?
您是倾向于使用这些功能集中的一个还是更喜欢自己编写(可能是为了提高效率,可移植性,灵活性等)?
笔记:
提前致谢!
我有一个像这样的词典列表:
[{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]
Run Code Online (Sandbox Code Playgroud)
我想找到min()和max()价格.现在,我可以使用带有lambda表达式的键(在另一篇SO文章中找到)轻松地对此进行排序,所以如果没有其他方法我就不会卡住.然而,从我所看到的,几乎总是在Python中有一个直接的方式,所以这是我学习更多东西的机会.
给出SQL Server 2005中的下表:
ID Col1 Col2 Col3
-- ---- ---- ----
1 3 34 76
2 32 976 24
3 7 235 3
4 245 1 792
Run Code Online (Sandbox Code Playgroud)
编写产生以下结果的查询的最佳方法是什么(即产生最终列的查询 - 包含每行的Col1,Col2和Col3中的minium值的列)?
ID Col1 Col2 Col3 TheMin
-- ---- ---- ---- ------
1 3 34 76 3
2 32 976 24 24
3 7 235 3 3
4 245 1 792 1
Run Code Online (Sandbox Code Playgroud)
更新:
为了澄清(正如我在演讲中所说),在真实场景中,数据库已正确规范化.这些"数组"列不在实际表中,而是在报表中所需的结果集中.新要求是报告还需要此MinValue列.我无法更改基础结果集,因此我期待T-SQL获得一个方便的"走出监狱卡".
我尝试了下面提到的CASE方法并且它有效,尽管它有点麻烦.它也比答案中说明的更复杂,因为你需要满足同一行中有两个最小值的事实.
无论如何,我想我会发布我目前的解决方案,鉴于我的限制,它的效果非常好.它使用UNPIVOT运算符:
with cte (ID, Col1, Col2, Col3)
as
(
select ID, …Run Code Online (Sandbox Code Playgroud) min ×10
max ×7
c++ ×3
python ×3
c ×2
dictionary ×2
list ×2
sql ×2
vector ×2
idioms ×1
minimum ×1
missing-data ×1
na ×1
postgresql ×1
r ×1
sql-server ×1
t-sql ×1