"Dynamic" if 语句 C++
"Dynamic" if statement c++
我想制作一个可以根据球队生成足球比赛的程序。条件:
- 每个人都必须和每个人一起玩
- 必须以轮为单位
例如:我们有4个小组:a,b,c和d。
所以一个示例解决方案:
Round 1:
a-b
c-d
Round 2:
a-c
b-d
Round 3:
a-d
c-b
我有一个函数,可以生成一个数组当每个人玩每个人。
例如:a-b
a-c
a-d
b-c
b-d
c-d
但是我必须对这些轮进行排序。我按照在每轮中放置第一个的方式对函数进行排序:
Round 1:
a-b
x-x
Round 2:
a-c
x-x
Round 3:
a-d
x-x
在这种情况下,我可以用一个简单的if语句安排缺失的那些。我在每轮中检查两个x不能是a和b,这样它就可以排序了。但问题是当我在一轮中至少有3个团队时。
Round 1:
a-b
x-x
y-y
我有3个循环在彼此,所以它可以排序与任何团队,如果我有一个"动态"的if语句。
我的意思是这样我不需要只检查两个不可能是a和b的x因为我有两个不可能是a b c d的y-y
那么有什么方法可以动态地执行这个if语句吗?
因为这个:
if (iTR[x][0] != iT[i][0] && iTR[x][0] != iT[i][1])
不能检查一个地方,但我需要检查越来越多的地方。
很抱歉写得这么复杂,但我不能写得更简单。提前感谢大家!
从你的措辞看不太清楚。但是听起来(也许吧?)你的工作代码不让你高兴,因为你在循环中运行if
语句,而不是if
的"更强大"的变体。这个"动态if"可以一次运行任意数量的比较,使得循环变得不必要。
所以也许你不关心的事情是:
vector<int> v;
...
bool noOnes = true;
for (vector<int>::iterator i = v.begin(); i != v.end(); i++) {
if (*i == 1) {
noOnes = false;
break;
}
}
if (noOnes) {
cout << "No values in the vector were 1";
}
你想象的东西会以同样的方式运行,但更像:
vector<int> v;
...
// pseudocode, I'm making this "ifall" syntax up
ifall(v, != 1) {
cout << "No values in the vector were 1";
}
如果我没猜错你问题的实质,那么问这个问题是合理的。但首先要指出的是,在c++(和其他软件环境)中,"动态"一词具有特定的含义,与此实际上没有任何关系。它通常是"静态"的反义词,您可以通过一些搜索来阅读术语:
https://stackoverflow.com/search?q=difference + +静态+和+动+ % bc % 2 b % 2 b % 5 d
至于c++"内置"的技术,它可以让你在不包含循环的代码中表达这些东西……它的存在。在标准库中有一个名为<algorithm>
的头文件,"定义了一组特别设计用于元素范围的函数"。
使用这个,你可以测试一个向量中是否有元素不为1,比如…find_if
并向其传递一个函数,该函数用于测试特定元素是否为一个元素:
bool IsOne(int i) {
return (i == 1);
}
...
vector<int> v;
...
if (find_if(v.begin(), v.end(), IsOne) == v.end())) {
cout << "No values in the vector were 1";
}
循环都在find_if
算法内部处理。不管是好是坏,我很少看到人们在"现实世界"的代码库中使用<algorithm>
。我想大多数早期的c++课程都会告诉你不要担心这个问题,只要使用循环就可以得到正确的答案。你想不想掉进这个兔子洞取决于你。
你为什么不这样做呢?
for(int ww =0; ww < numRounds; ww++)
for(int zz =0; zz < numRounds; zz++)
if(iTR[x][zz] != iT[i][ww])
我不大明白你的问题。在一个微不足道的意义上,几乎每一个if都是动态的。如果它是完全静态的,编译器会把它优化出来。
我相信你没有理解你的作业是关于什么的。这更多的是理解算法的问题,而不是用特定的语言(如c++)编写算法的问题。
但是,作为提示,您可以考虑编写一个实用函数来计算您的复杂(或动态)条件。
- 我的简单if-else语句是如何无法访问的代码
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么是0;C++中的有效语句
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 我似乎对if/else的基本语句有问题:/
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 以在Qt中的IF语句中设置时间延迟
- Craps游戏问题,忽略if语句
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 如何编写一个使用n倍三元条件语句的C++布尔函数
- c++:定义if语句中的模板
- 主线的等价语句是什么