等价多米诺骨牌对的数量(0005)
2023-12-21 21:33:26
题意
输入多个二元组元素,如果有两个二元组元素相等或者倒转之后相等,把计数器加一,最后输出计数器的数值
输入
[[1,2],[2,1],[3,4],[5,6]]
输出
1
说明
输入的每一个数字都是在1-9之间
代码
#include<bits/stdc++.h>
using namespace std;
bool check(int a,int b)
{
if(a==b||(a/10==b%10&&a%10==b/10)) return true;
else return false;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
string s;
cin>>s;
int len=s.size();
vector<int> nums;
for(int i=0;i<len;i++)
{
if(isdigit(s[i])) //cout<<s[i];
nums.push_back(s[i]-'0');
}
int len0=nums.size();
//for(int i=0;i<len0;i++) cout<<nums[i];
vector<int> two;
for(int i=0;i+1<len0;i+=2)
two.push_back(nums[i]*10+nums[i+1]);
//int len1=two.size();
//for(int i=0;i<len1;i++) cout<<two[i]<<endl;
int len1=two.size();
int cnt=0;
for(int i=0;i<len1;i++)
{
for(int j=i+1;j<len1;j++)
{
if(check(two[i],two[j])) cnt++;
}
}
cout<<cnt<<endl;
return 0;
}
总结
1.把数字分离出来
用digit函数,把字符串里面的数字分离出来,存到nums数组里面
2.把两个数字合成一个两位数
3.设计一个check函数
如果两个数字相等,或者十位等于个位,个位等于十位,就返回true,反之返回false
4.两层循环遍历所有情况
用计数器记录答案
文章来源:https://blog.csdn.net/L3102250566/article/details/135138850
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!