等价多米诺骨牌对的数量(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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。