社区
C语言
帖子详情
一个比较复杂的判断,如何实现??????
xxsteven
2003-09-13 04:53:48
我有i,j,k,l 4个int类型的变量他们都是有唯一值的变量。通过一段程序给他们付了值,现在如何判断,这4个数里面只要有任意2个变量的值是1或0。
...全文
104
18
打赏
收藏
一个比较复杂的判断,如何实现??????
我有i,j,k,l 4个int类型的变量他们都是有唯一值的变量。通过一段程序给他们付了值,现在如何判断,这4个数里面只要有任意2个变量的值是1或0。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qkhmyi
2003-09-14
打赏
举报
回复
可不可以把你的原问题讲出来听听。。。?
qkhmyi
2003-09-14
打赏
举报
回复
我上边说的那个判断式依赖于布尔变量的值,可能不具移植性,你自己看着办吧。。
不过在我知道的编译器上都是对的。。
如果你的目的只是针对这个问题,你可以一个一个写出来,不过只需要6种情况,
redosuit可以不要,你只要把temp[0],temp[1],temp[2],temp[3]排序后,让01,02,03,
12,13,23和dosuit比较就可以了。。道理显然!
如果你想解决更一般的问题,首先要实现一个功能:找出从N个数中选出M(M<N)个
数的所有排列,这个不难,你自己先想想吧。。
qkhmyi
2003-09-14
打赏
举报
回复
if(!i+!j+!k+!l==2||!(i-1)+!(j-1)+!(k-1)+!(l-1)==2)
pzeping2003
2003-09-14
打赏
举报
回复
同意楼上的算法,
xxsteven
2003-09-14
打赏
举报
回复
可以,问题就是一个pork游戏
一共用32张牌,我现在用0到31 来表示,有2个人在游戏,
每个人4张牌,
我提的问题就是2个人打和的牌的结构
比如我拿数字表示6张牌
(8 ,9|16 ,17|14 ,15),
如果我得到了这样的3张就是打和的牌。
8|16|14
8|17|14
14|8|16
9|14|17
但不能是8|9|17 ;16|17|15;14|15|17等等。
如何实现。。。
JoeRen
2003-09-14
打赏
举报
回复
bool a=(i>>1==0),b=(j>>1==0),c=(k>>1==0),d=(l>>1==0);
return (a || b || c) && (b || c || d) && (c || d || a)
xxsteven
2003-09-14
打赏
举报
回复
你说的对,我现在需要的是这样的算法,请帮我看看如何实现,整个过程分为2步
1,我有4个int变量,temp[0],temp[1],temp[2],temp[3],(找出从N个数中选出M(M<N)个
数的所有排列,这个不难,你自己先想想吧)我就是想看看他们4个的任意3个的排列个数并把他们循环排列打出来。如何实现呢?
2,我还有一组数(8 ,9|16 ,17|14 ,15),8和9是一组,16和17是一组,14和15是一组,
我要把每一个组中抽一个出来排序组成一个由3个数字组成的一组。比如:
8|16|14
8|17|14
14|8|16
9|14|17
但不能是8|9|17 ;16|17|15;14|15|17等等。
综合1和2,最后我想要的结果是看第一步里面的任意取出的3个数组成的字符串temp[0]|temp[1]|temp[2](不一定是012的顺序)的任意排列和第2步里面的所有组合成的字符串是否相等
如何解决呀?不知道我说清楚了没有
iceheart
2003-09-13
打赏
举报
回复
int iArray[4];
iArray[0] = i;
iArray[1] = j;
iArray[2] = k;
iArray[3] = l;
int count0 = 0;
int count1 = 0;
for (int nLoop = 0; nLoop < 4; nLoop++) {
if (iArray[0] == 0) count0++;
if (iArray[0] == 1) count1++;
if (count0 >=2) {
//至少有2个零
//add your code
break;
}
if (count1 >=2) {
//至少有2个1
//add your code
break;
}
}
chenjie1981
2003-09-13
打赏
举报
回复
temp[0],temp[1],temp[2],temp[3]任选2个有4*3种组合方法,01,10,02,20,03,30,12,21,13,31,23,32,你考虑这12种情况就行了,不过麻烦了点,分解字符我不赞成,绝对比正向的难实现。
xxsteven
2003-09-13
打赏
举报
回复
没有人说话了,啊?
xxsteven
2003-09-13
打赏
举报
回复
Yssss1980(浪子雪影),如何实现呢?
dragonlw
2003-09-13
打赏
举报
回复
呵呵,我认同第一个人的想法
还有更好的算法么?更高效率
比较几次?占几个存储单元?
Yssss1980
2003-09-13
打赏
举报
回复
我观察了一下你的数组,好像可以反过来思考
你可以把数组中的字符串分解开来,然后和temp[0],temp[1],temp[2],temp[3]比较
这样是不是有效率一点?
xxsteven
2003-09-13
打赏
举报
回复
大家请看我要实现的东西?如下:
先定义3个数组:
const char * dosuit [ 16 ] = { "01","23","45","67","89","1011","1213","1415","1617","1819",\
"2021","2223","2425","2627","2829","3031" };
const char * redosuit [ 16 ] = { "10","32","54","76","98","1110","1312","1514","1716","1918",\
"2120","2322","2524","2726","2928","3130" };
int temp [32];
temp[0],temp[1],temp[2],temp[3]的取值分别是从0到31同时它是随机得到的0到31其中的一个数字。
我想实现的是如果temp[0],temp[1],temp[2],temp[3]中任意2个组合起来值等于dosuit或redosuit2个数组里面任意一个成员就printf.....。
比如:
temp[0] = 0;
temp[1] = 1;
sprintf ( str1,"%d%d",temp[0],temp[1] );
if ( ( strcmp ( str1,dosuit[0] ) == 0 ) || ( strcmp ( str1,redosuit[0] ) == 0 ) )
printf ( "--------有相对应的值---------\n" );
我只能实现这2个但不知道如何实现temp[0],temp[1],temp[2],temp[3]随意排列的对应
xxsteven
2003-09-13
打赏
举报
回复
谁有更好的算法?
csdn5211
2003-09-13
打赏
举报
回复
楼上的思路是依次判断并用一个变量记录结果,不过我还没想到更有效率的算法。
Yssss1980
2003-09-13
打赏
举报
回复
int count0=0,count1=0;
if(i==0) count0++;
else if(i==1) count1++;
if(j==0) count0++;
else if(j==1) count1++;
if(k==0) count0++;
else if(k==1) count1++;
if(l==0) count0++;
else if(l==1) count1++;
if(count0==2) {printf("有两个0");}
if(count1==2) {printf("有两个1");}
xxsteven
2003-09-13
打赏
举报
回复
说话呀
你必须知道的495个C语言问题
6.22 如何在
一个
文件中
判断
声明为extern的数组的大小(例如,数组定义和大小在另
一个
文件中)?sizeof操作符似乎不行。 6.23 sizeof返回的大小是以字节计算的,怎样才能
判断
数组中有多少个元素呢? 第7章 内存...
什么是防抖和节流?有什么区别?如何
实现
?
尤其是第
一个
需求,如果在频繁的事件回调中做复杂计算,很有可能导致页面卡顿,不如将多次计算合并为一次计算,只在
一个
精确点做操作。 一般的防抖会有immediate选项,表示是否立即调用。 // 这个是用来获取当前...
什么是防抖和节流?有什么区别?如何
实现
?—— 总结
有这样一种应用场景,在滚动事件中做
一个
复杂取值计算或者频繁的触发
一个
事件,这是很影响性能并容易导致页面卡顿的,所以要合并多次请求,通过函数做
一个
精确操作。这时就会用到函数防抖或者函数节流,那么,这两种...
如何
判断
2条线段是否相交(编程
实现
)?
我们在编程中有时可能会碰到一些问题,比如怎么
判断
2条线段是否相交,最常规的一种思路可能就是解方程,看是否有交点,但这种方法用代码
实现
感觉稍显复杂,时间复杂度大,且控制条件多,很容易出错,那我们有没有更...
android开发游记:RecycleView
实现
复杂首页布局三种方式
做过电商类应用的朋友可能都会遇到
一个
比较头疼的问题:复杂的首页布局如何
实现
。参考百度糯米,美团,bilibili等应用,都会发现其首页的布局相对复杂,例如下图bilibili的首页(第二张是demo
实现
的效果图),可以...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章