首页 / C# / C#-非布尔值“真值表”的创建
C#-非布尔值“真值表”的创建
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-非布尔值“真值表”的创建,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1302字,纯文字阅读大概需要2分钟。
内容图文
![C#-非布尔值“真值表”的创建](/upload/InfoBanner/zyjiaocheng/680/cdbde11424bb40f78f9b41fd5bd0368a.jpg)
我有以下问题:我需要创建一个表,该表是来自集合的值的组合.集合中元素的基数未知,并且可能因集合而异,值的域未知,并且因集合而异.集合中的元素是非负的,集合中至少有两个元素.
下面是一个示例:
> SET_A = {0,1,2}
> SET_B = {0,1}
> SET_C = {0,1}
结果应包含以下行(顺序不是约束):
表:
> | 0 0 0 |
> | 0 0 1 |
> | 0 1 0 |
> | 0 1 1 |
> | 1 0 0 |
> | 1 0 1 |
> | 1 1 0 |
> | 1 1 1 |
> | 2 0 0 |
> | 2 0 1 |
> | 2 1 0 |
> | 2 1 1 |
有人知道这个问题背后的数学是什么吗?我试图查看多集问题,逻辑表,组合函数.我发现的许多定义都与我的问题相似,但是到目前为止,我无法隔离文献中的任何内容.一旦有了参考定义,我就可以考虑对其进行编码,但是现在我迷失在递归函数和糟糕的数组索引游戏中.谢谢.
编辑:问题已经在以下位置提出:
C# Permutation of an array of arraylists?
解决方法:
编辑:对不起,昨天晚上不得不跑步.对于任意维度,您可能必须使用递归.没有它可能有一种方法,但是使用递归是最简单的.以下未经测试,但应该是正确的.
IEnumerable<int[]> getRows(int[][] possibleColumnValues, int[] rowPrefix) {
if(possibleColumnValues.Any()) { //can't return early when using yield
var remainingColumns = possibleColumnValues.Skip(1).ToArray();
foreach(var val in possibleColumnValues.First()) {
var rowSoFar = rowPrefix.Concat(new[]{val}).ToArray();
yield return getRows(remainingColumns rowSoFar);
}
}
}
用法:
getRows(new [][] {
new [] {0,1,2},
new [] {0,1},
new [] {0,1},
}, new int[0]);
内容总结
以上是互联网集市为您收集整理的C#-非布尔值“真值表”的创建全部内容,希望文章能够帮你解决C#-非布尔值“真值表”的创建所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。