c – 如何有效地检测4个整数变量的对称性?
发布时间:2020-12-16 10:37:17 所属栏目:百科 来源:网络整理
导读:我想在4个整数变量i,j,k和l中找到对称性. 对称性是: 所有四个数字相等:XXXX, 三个数字相等:XXXY,XXYX,XYXX,YXXX 两对相等的数字:XXYY,XYXY,XYYX,…… 一对相等数字和两个不同数字:XXYZ,XYXZ,XYZX,…… 所有数字都不同. 所有变量都在一定的非连续范围内
我想在4个整数变量i,j,k和l中找到对称性.
对称性是: >所有四个数字相等:XXXX, 所有变量都在一定的非连续范围内运行.我使用嵌套的if else语句.第一个if检查所有变量的不等式.如果没有,那么我有案例1.下一个if检查是否有任何相等的对.如果没有,那么情况5.下一个if检查三个相等的数字.如果为真,则为情况2.否则,最后一个if检查两对相等的数字.如果是,则为案例3,否则为案例4. if(!(i==j && j==k && k==l)){ if(i==j || i==k || i==l || j==k || j==l || k==l){ if((i==j && j==k) || (i==j && j==l) || (i==k && k==l) || (j==k && k==l)){ ...//do something }else{ if((i==j && k==l) || (i==k && j==l) || (i==l && j==k)){ ...//do something }else{ ...//do something } } }else{ ...//do something } }else{ ...//do something } 这样做有更好的方法吗?我的意思是更好的表现,因为我必须进行数百万次的测试. 解决方法
与samgak相似的想法,但不需要外部表.只计算所有比赛的总和
int count = (i==j) + (i==k) + (i==l) + (j==k) + (j==l) + (k==l); 并切换以下选项 switch (count){ case 0: //All differenct case 1: //One same case 2: //Two different pairs case 3: //Three same case 6: //All are same } 同样,如前所述,在某些情况下,您当前的代码可能会更快.特别是如果最常见的情况是所有元素相等的情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- oracle 物化视图
- Swift 周报 #73
- ruby-on-rails – 资产未在capybara / rspec规范期间加载
- c# – Dynamic GridView AllowPaging在DataBind上返回错误
- ajaxForm 与ajaxSubmit
- ruby-on-rails – 使用Grape API和Heroku的CORS问题
- 在庞大的表中创建index / pk花费的时间太长了.我正在使用Or
- Bullet(Cocos2dx)之优化PhysicsDraw3D
- ruby-on-rails-3 – capistrano 3不知道如何构建任务“部署
- Write & Read xml as java class