数组中使用 int 中的位的不同元素数
Number of distinct elements in array using bits in int
我有这个代码
我的代码出了什么问题它必须显示有多少个不同的元素
string name;
long long maps;
int i,j,test,l,counts=0,k;
cin>>test;
for(i=0;i<test;i++){
counts=maps=0;
cin>>name;
l = name.length();
for(j=0;j<l;j++){
k=(toupper(name[j])-'A');
cout<<endl<<(maps&(1<<k))<<" "<<k;
if(0 == maps&(1<<k)){
counts++;
maps|=(1<<k);
}else{
cout<<" "<<(int)(maps&(1<<k))==0;
}
}
cout<<counts;
}
有什么问题检查输出,我找不到为什么我不工作
问题就在这里:
if(0 == maps&(1<<k)){
相等运算符==
的优先级高于按位 AND 运算符&
。 所以上面的评估是这样的:
if ((0 == maps) & (1 << k )) {
您需要添加括号才能获得所需的行为:
if (0 == (maps & (1 << k))) {
您需要在cout
通话中执行相同的操作:
cout<<" "<<(int)((maps&(1<<k))==0);
相关文章:
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- 如何在一维数组中的每个元素中都有多个int值
- 使用SWIG将numpy数组元素(int)传递给c++int
- 从 C++ 中的 int ** 数组访问元素
- unordered_map<int,int>如何处理负面元素?
- 如何在一对集合的向量中插入元素?vector<pair<int,set<string>>>
- unordered_set是否适合存储矢量<int>元素的数据结构?如果是这样,我将如何实现哈希函数?
- 是否可以交换在 c++ 中作为函数 func(say) 中的参数传递的 const 向量的两个元素,例如:vector<int>func (const vector<int>&
- 如何仅根据第二个元素对map<int,pair<int,int> >进行排序?
- 优先级队列(使用 pairs<int,int> ) 根据 for 循环迭代器的顶级元素
- 如何将 int 数组的 1 个元素转换为字符串/字符
- 当我向 vector<int *> 添加元素时,我遇到了一些问题
- 将const int std ::数组的n元素复制到int矢量中.怎么做
- 有没有办法比较用 int 初始化的 char 类型的数组的 2 个元素
- 在函数返回时,清除了添加到一对int和字符串向量的矢量中的元素
- 访问矢量<矢量<int>>元素
- 将 vector<vector> 的最后一个元素移动到<int>开头
- 使用Stoi()将字符串数组元素转换为C 中的INT
- 在向量上找到第一对元素 (int) 并得到第二对元素 (struct)