等价多米诺骨牌对的数量(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进行投诉反馈,一经查实,立即删除!