| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4479 人关注过本帖
标题:求教:判断三个整数是否相邻
只看楼主 加入收藏
qtc2018
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-1-30
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
求教:判断三个整数是否相邻
如题
搜索更多相关主题的帖子: 判断 整数 是否 相邻 
2019-01-30 16:14
qtc2018
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-1-30
收藏
得分:0 
#include<iostream>
using namespace std;
int main(){
int a,b,c,t;
cin>>a>>b>>c;
    if(b>a){
        t=a;
        a=b;
        b=t;
    }
    if(c>b){
        t=b;
        b=c;
        c=t;
    }
        if(b>a){
        t=a;
        a=b;
        b=t;
    }
    if(a-2==b-1==c&&a+b+c==a*3||a+b+c==b*3||a+b+c==c*3)
{

        cout<<"TRUE";
    }else{
    cout<<"FALSE";
    }
    return 0;
}
不知道哪里错了
2019-01-30 16:18
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
找出最小数  找出最大数 看看差值是否是2

DO IT YOURSELF !
2019-01-30 16:20
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 2楼 qtc2018
程序代码:
#include<iostream>

using namespace std;

int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    if(a+b+c==a*3||a+b+c==b*3||a+b+c==c*3) cout<<"TRUE";
        else cout<<"FALSE";
    return 0;
}

DO IT YOURSELF !
2019-01-30 16:58
幽竹烟雨
Rank: 2
来 自:SunGalaxy
等 级:论坛游民
威 望:3
帖 子:43
专家分:86
注 册:2018-11-9
收藏
得分:7 
用了STL里的排序函数——sort,sort真的很方便
#include<bits/stdc++.h>//万能头文件,不过并不包括<windows.h>库等好玩的东西
using namespace std;
int a[3];//用数组操作
int main()
{
    ios::sync_with_stdio(false);//个人习惯,您可以选择注释掉它
    cin>>a[0]>>a[1]>>a[2];//输入三个数
    sort(a,a+2);//这个函数的作用是将a[0~2] 的数按从小到大排序
    if(a[0]==a[1]-1&&a[0]==a[2]-2&&a[1]==a[2]-1) cout<<"TRUE";//看得懂上面的注释,这个您应该能理解
    else cout<<"FALSE";//反之
    return 0;
}
2019-01-30 22:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:7 
你本身的思路是正确的,就是最后那个 if(a-2==b-1==c&&a+b+c==a*3||a+b+c==b*3||a+b+c==c*3) 不知所云,难道不应该是 if( c+1==b && b+1==a ) 吗?也就是
程序代码:
bool foo( int a, int b, int c )
{
    if( a > c )
        std::swap( a, c );
    if( b > c )
        std::swap( b, c );
    if( a > b )
        std::swap( a, b );
    return a+1==b && b+1==c;
}



用数学思路来思考,有三个自由量,那么取三个等式就可以确定下来,例如
bool foo( int a, int b, int c )
{
    int p = a+b+c;
    int q = a*b*c;
    int r = a*a+b*b+c*c;
    return p*p*p==27*q+9*p && p*p+6==3*r;
}
当然,因为 a+b+c、a*b*c、a*a+b*b+c*c 都可能溢出,所以只能算是数学算法,不能变为计算机算法。
2019-01-31 09:20
快速回复:求教:判断三个整数是否相邻
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018157 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved