| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2650 人关注过本帖
标题:用 C++ 实现同或
只看楼主 加入收藏
苍翠的路
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-15
收藏
得分:0 
回复 10 楼 stop1204
很清晰,实现起来简单明了,想看看更简化的版本,不知版主能否用vector实现功能,感激不已……
PS:我想楼上的哥们说的意思是定义char型数组时应该为常量,不能是变量。(编译时若为n1无法通过)
2014-09-03 21:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54061
注 册:2011-1-18
收藏
得分:5 
回复 11 楼 苍翠的路
为什么要用vector?bitset就能完成核心功能。如下代码中引入string只是为了测量输入长度
程序代码:
#include <iostream>
#include <string>
#include <bitset>

int main()
{
    std::string t;
    std::cin >> t;

    std::bitset<50> a(t), b;
    std::cin >> b;

    std::cout << ((~(a^b)).to_string().c_str()+50-t.size()) << std::endl;

    return 0;
}

如果你只想用单一容器的话,string就行了,自己完成同或操作
程序代码:
#include <iostream>
#include <string>
#include <cassert>

int main()
{
    std::string a, b;
    std::cin >> a >> b;

    assert( a.size() == b.size() );
    for( size_t i=0; i!=a.size(); ++i )
        a[i] = a[i]==b[i] ? '1' : '0';

    std::cout << a << std::endl;

    return 0;
}

2014-09-04 09:18
苍翠的路
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-15
收藏
得分:0 
回复 12 楼 rjsp
简单高效的方法,涨知识了,十分感谢
2014-09-04 12:08
k_misuzu
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2014-9-1
收藏
得分:0 
回复 10 楼 stop1204
我的意思是声明数组时不能用变量吧- -
2014-09-04 17:31
allmy34
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2012-12-29
收藏
得分:0 
for(int ix=0;ix<2;++ix)
这句中的++ix应该放在else 里break的前面吧,不然输入回车后直接跳出去了,根本执行不了自加这句
2014-10-06 22:56
allmy34
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2012-12-29
收藏
得分:0 
试验了一下,结束符不能用回车,改为#就可以了
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    char var;
    int num = 50;
    vector < vector < int >>ivec(2);
    for (int i = 0; i < 2; ++i)
    {
        ivec[i].reserve(num);
    }
    for (int ix = 0; ix < 2;++ix )
    {
        while (cin >> var)
        {
            if (var != '#')
            {
                ivec[ix].push_back(var-'0');
            }
            else
                break;
        }
    }
    if (ivec[0].size()<ivec[1].size())
        num=ivec[0].size();
    else
        num=ivec[1].size();
    for (int indx = 0; indx < num; ++indx)
    {
        if (ivec[0][indx] != ivec[1][indx])
        {
            cout << 0;
        }
        else
        {
            cout << 1;
        }
    }
    cout << endl;
    return 0;
}
2014-10-07 23:31
快速回复:用 C++ 实现同或
数据加载中...
 
   



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

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