请教一个关于算法的c#问题

问题描述

我现在用WPF要做一个程序,里面会有一个list集合,在这个集合里面只有1、2、3的正整数值,具体有多少个,不太清楚。我现在需要做的是在这个集合里面我要查找,如果全是数字1的话我会返回数字1,如果全是数字2的话我会返回2,如果全是3的话我会返回3,如果里面只要有一个3其余是1是2无所谓我会返回“不知道”。不知上面这个需求我该怎么处理,谢谢!

解决方案

解决方案二:
需要先定义ValueConverter:publicclassNumberConvert:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){varlist=(List<int>)value;//如果list算是1,return1……}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){returnnull}}定义Convert资源:<local:NumberConvertx:Key="cvtNumber"/>在需要取值的地方用Binding:={Bindinglist,Converter={StaticResourcecvtNumber}}
解决方案三:
Dictionary<string,int>dic=new...dic.add("1",0);dic.add("2",0);dic.add("3",0);foreach(varvinlist)dic[v]++;if(dic["1"]==list.count){return1;}elseif......

解决方案四:
varp=newList<int>(){1,2,3,2,3,1};varn=p.Distinct().ToList();if(n.Count()==1)......
解决方案五:
引用3楼xuzuning的回复:

varp=newList<int>(){1,2,3,2,3,1};varn=p.Distinct().ToList();if(n.Count()==1)......

好像这个方法只能识别集合里面重不重复,如果全都是1或者全是2或者全是3就不行了
解决方案六:
引用2楼crystal_lz的回复:

Dictionary<string,int>dic=new...dic.add("1",0);dic.add("2",0);dic.add("3",0);foreach(varvinlist)dic[v]++;if(dic["1"]==list.count){return1;}elseif......

没太理解这个方法能否写的详细些,比如我的集合是varp=newList<int>(){1,2,3,2,3,1};,我怎样按照你的方法筛选出我想要的结果
解决方案七:
引用1楼rocmemory的回复:

需要先定义ValueConverter:publicclassNumberConvert:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){varlist=(List<int>)value;//如果list算是1,return1……}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){returnnull}}定义Convert资源:<local:NumberConvertx:Key="cvtNumber"/>在需要取值的地方用Binding:={Bindinglist,Converter={StaticResourcecvtNumber}}

没太理解你给的方法,其实我是要在后台代码里写想要的算法,怎么会用到绑定了
解决方案八:
引用4楼woxinliuqiang的回复:

Quote: 引用3楼xuzuning的回复:
varp=newList<int>(){1,2,3,2,3,1};varn=p.Distinct().ToList();if(n.Count()==1)......

好像这个方法只能识别集合里面重不重复,如果全都是1或者全是2或者全是3就不行了

如果集合里有重复项,那么Distinct出来的集合数量肯定少于原始集合Distinct出来的集合只有1项,就意味着集合里所有数据都是一样的,然后你返回这项就行否则结果就是不知道
解决方案九:
是看到你特意提到WPF,以为是要用交互逻辑呈现数据,理解错了,不好意思
解决方案十:
int[]a={0,0,0};foreach(intiinlist){a[i]++;}
解决方案十一:
varlist=newList<int>();varsum=list.Sum();varcount=list.Count;if(sum==count){//all1}elseif(sum==count*2){//all2}elseif(sum==count*3){//all3}else{//unknow}

解决方案十二:
嗯,上一个方法有点问题。。。下面这样就ok了varlist=newList<int>();varcount=list.Count;if(list.Count(i=>i==1)==count){//all1}elseif(list.Count(i=>i==2)==count){//all2}elseif(list.Count(i=>i==3)==count){//all3}else{//unknow}

时间: 2024-12-27 20:32:58

请教一个关于算法的c#问题的相关文章

算法 空间坐标-一个空间坐标算法问题,求请教!

问题描述 一个空间坐标算法问题,求请教! 如图,已知矩形长宽,一个正交的十字在矩形内,假设以矩形左下角为坐标原点,根据十字四边的长度Dl,Dr,Db,Df,确定十字形中心点的坐标(黑点). 解决方案 看下初中的三角函数,就是数学问题了.

赋值-请教一个php自由增减的小算法。

问题描述 请教一个php自由增减的小算法. $i在0~30 的时候,$j是自由增减的,$i==30的时候,$j的值也一定要自由增减到30,不要直接就赋值30,这个算法怎么写呢? 解决方案 问题问的不是很清楚,$j自由增减是如何自由增减呢? 算法大体是这样: 1.先判断$i的值,是否在0~30里面 2.如果$i在0~30里面,$j自由增加,如果$i ==30,判断$j是否为30,是,结束代码,不是,$j++或$j-- 解决方案二: 我是新手,什么是自由增减呢,是随机增加一个数还是什么?如果是这样可

请教一个算法问题时间复杂度要求是(1)

问题描述 请教一个算法问题时间复杂度要求是(1) 做项目的时候有一个处理大致是这样的:需要每次插入map;每次输入是(1,0),(2,0),(3,0):(2,1),(3,1)...当key是新添加的或者key对应的count大于前一次就要把这个key拿出来,时间复杂度要求是O(1), 请教大家有没有好的方法 解决方案 不可能事件复杂度是1,最低是LogN,不过这个很接近1了.除非你有无限制的内存,然后直接地址映射. 解决方案二: 一个数组中只有0,1,2三个元素,进行排序,要求时间复杂度为O(n

算法 选择排序-请教一个选择排序的算法问题

问题描述 请教一个选择排序的算法问题 你好, 我刚刚开始接触JAVA, 问一个选择排序的问题. private static void SelectionSort (int[] arr) { for(int i=0; i for(int j=i+1;j if (arr[i] > arr[j]) { int m; m = arr[i]; arr[i] = arr[j]; arr[j] = m; } } } } 这个方法正确,但是交换次数多了,所以我想改进一下. private static voi

c语言-请教一个C编程 打印输出图像的算法编程

问题描述 请教一个C编程 打印输出图像的算法编程 解决方案 大概就是这样,建立笛卡尔坐标系. 用point()函数里的嵌套for循环来输出每一个字符,然后把代表坐标的i和j传递给getChar()函数通过坐标来决定输出的是什么字符. 解决方案二: char getChar(int x,int y,int n) { if(x<0) x=-x; if(y<0) y=-y; if(x>y) { if(n-x<=2) return 'x'+n-x; else return '0'+n-x-

请教一个应用推荐算法

问题描述 请教一个应用推荐算法 看到百度一个关于应用推荐的算法,算法描述如下: 一种在线应用搜索方法为步骤: 解决方案 比如说,产生一个0-9的随机数,按理说结果为1的可能性为0.1,结果为2也是0.1,等等. 但是我们可以制造一个随机数发生器,产生1的可能性为0.5,产生2的可能性为0.25,-- 这就是不等概率. 不等概率随机数的生成可以通过标准随机数生成算法衍生出来. 比如产生一个0~1的浮点数,那么产生值在0~0.5的概率是0.5,0.5~0.75的概率是0.25,--,据此判断,并且返

sql-求助:请教一个SQL语句的算法

问题描述 求助:请教一个SQL语句的算法 业务逻辑:在财务中,在一个结算周期内的结算金额没有达到结算限额,则此次不做结算,将此次结算金额累计到下一个结算周期内结算,直到满足结算限额才结算.其中每一个合同的计算限额不同. 举例:已知的合同号001的结算限额为200 ,合同号002的结算限额为300 合同号A 结算日B 结算金额C 想得到的结果D 001 1.1 100 0 001 2.1 110 210 001 3.1 120 0 001 4.1 130 250 001 5.1 140 0 001

后台-请教一个关于网站用户密码保存的问题

问题描述 请教一个关于网站用户密码保存的问题 之前自己做过一个简单的网页有登录注册功能的,但是我是直接将用户注册的名字和密码保存在数据库中,换句话说,我可以在数据库里直接看到用户的密码.当然这只是一个个人简单的小demo,但我想问一下,在实际投入运行的网站中,他们是怎样保存用户的密码的?后台人员能够从数据库中看得到用户的密码吗?如果看不到,那比如我们要修改密码的话,后台又是如何判断我输入的密码是否是原来的密码? 求教一下~谢谢~ 解决方案 一般来说,我们使用哈希(Hash)算法来存储密码. 其中

vc++-请教一个VC++找图的问题

问题描述 请教一个VC++找图的问题 请问下,VC++能找图吗?就是先给定一个图片,然后在指定的地方找这个图片,就像按键 精灵那样一样的. 解决方案 可以,但是算法要自己写,没有现成的函数可以调用 解决方案二: 屏幕截图,然后比较每个像素啊,写一个图片比较的算法,笨点的算法大致思路是,获取被找图第一行像素,然后在屏幕截图上依次比较,找到后是第二行,第三行,,,图形处理可以用第三方图形库,或者用微软在Windows中自带的GDI/GDI+(图形设备接口) 解决方案三: 图片相似度比较,有很多图像处