C#判断两个List是否相同,无关顺序List1.Count == List2.Count && List1.All(List2.Contains) &&List1.Count == List2.Count &&List1.Except(List2)).Count() == 0
排列组合的概念
排列:从n个不同元素中取出m(m≤n)个元素,按照一定的
顺序
排成一列,叫做从n个元素中取出m个元素的一个排列(Arrangement)。
组合:从m个不同的元素中,任取n(n≤m)个元素为一组,叫作从m个不同元素中取出n个元素的一个组合。
排列组合实现代码
上一个项目做的一个水路的路径规划时,用到了排列的数据结构。求任意N个点里M个点的不同
顺序
的组合个数。
这样求最优路径。下面贴一段不知道哪里找的排列组合的算法。
public class PermutationAndCombination
/// 交换
两个
变量
/// </sum
注明:以下及其后续内容部分摘自《Standard C++ Bible》,所有程序代码都在Visual Stdio 6.0中编译运行,操作系统为WinXP。本文不涉及VC6.0开发工具的使用,只讲解C++语法知识。
C++和C的共同部分就不讲解了(如 常量和变量,循环语句和循环控制,数组和指针等,这里面的一些区别会在本节和下节介绍一下),具体可看精华区->新手上路->C语言入门,本文着重介绍C++
1.
两个
list
如果有重复元素(如
List
1: a,b,a
List
2: b,b,a) 是无法通过包含关系来
判断
是否
相等的.
有
两个
办法,其一是
两个
List
排序后再按
顺序
比较
.另一个办法就是计算各元素的重复项再进行
比较
第一种方案劣势太明显,时间复杂度过大
第二种以空间换时间,只需要遍历无需排序即可.
/// <summary>
public static class MathToolss
public static bool
List
Equals<T>(this IEnumerable<T> one, IEnumerable<T> another)
if (one.Count() != another.Count()) return false;
return (one.Except(another)).Count() == 0;
1、if(
List
A.Count ==
List
B.Count &&
List
A.Count(t => !
List
B.Contains(t)) == 0)
数量相等,元素值相等即为True;与元素
顺序
无关
;
List
<int> A = new
List
<int> {1,2,3};
List
<int> B = new
List
...
【问题描述】
从标准输入中读入
两个
整数集,整数集中数据无序,且可能有重复数据。当
两个
数据集中数据完全
相同
(去掉重复数据,
顺序
不一定
相同
),则
两个
数据集
相同
。编写一程序
判断
输入的两数据集
是否
相同
:用1表示
相同
,用0表示不同。
【输入形式】
先输入第一组整数集的个数(大于等于1,小于等于20),然后输入第一组整数(以一个空格分隔);再输入第二组整数集的个数(大于等于1,小于等于20),并输入第二组整数(以一个空格分隔)。
【输出形式】
若两数据集
相同
,则输出1,否则输出0,然后在下一行按照从小到大的顺
在
C#
中,可以使用`SequenceEqual`方法来
比较
两个
List
是否
相等,即使它们的元素
顺序
不同。但是,这种方法只会
比较
两个
List
中的元素
是否
相同
,而不会检查元素的位置。
以下是一个示例代码,演示如何
比较
两个
List
是否
相等:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
public static void Main(string[] args)
List
<int>
list
1 = new
List
<int> { 1, 2, 3, 4, 5 };
List
<int>
list
2 = new
List
<int> { 2, 3, 1, 5, 4 };
bool isEqual =
list
1.Count ==
list
2.Count &&
list
1.OrderBy(x => x).SequenceEqual(
list
2.OrderBy(x => x));
Console.WriteLine($"
两个
List
是否
相等:{isEqual}");
输出结果为:
两个
List
是否
相等:True
在上述示例中,我们首先
比较
两个
List
的长度
是否
相等,然后使用`OrderBy`方法对
两个
List
进行排序,最后使用`SequenceEqual`方法来
比较
排序后的
List
是否
相等。如果
两个
List
的长度
相同
且元素
相同
(无论
顺序
如何),则返回True,否则返回False。