瞌睡小源


私信TA

用户名:H2130823055

访问量:4819

签 名:

我が名はめぐみん、爆裂魔法を操りし者

等  级
排  名 45
经  验 11498
参赛次数 5
文章发表 76
年  龄 0
在职情况 学生
学  校 贺州学院
专  业

  自我简介:

解题思路:

注意事项:注意糖块融合后形成的糖块和后面一个糖块可以融合

参考代码:

#include<bits/stdc++.h>
using namespace std;
int f(int x[][3],int s[],int k,int m)
{
	for(int i=0;i<m;i++)
	{
		if((s[k]==x[i][1]&&s[k-1]==x[i][0])||(s[k]==x[i][0]&&s[k-1]==x[i][1]))
		{
			s[k]=0;//怕出错所以等于0
			s[k-1]=x[i][2];
			return 1;
		}
	}
	return 0;
}
int main()
{
	int n,m;
	int x[100][3];
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<3;j++)
		{
			cin>>x[i][j];
		}
	}
	int k;
	cin>>k;
	int s[100005];
	for(int i=1;i<=k;i++)
	{
		cin>>s[i];
                while(f(x,s,i,m))//解决糖块融合后形成的糖块和后面一个糖块可以融合
		{
		    k--;//融合后糖块总数量减一
		    i--;//下标退到融合后的糖块上,因为for循环中是i++所以最后输入新糖块的时候会移动到融合糖块的前一个		  
		}
	}
	for(int i=1;i<=k;i++)
	{
		cout<<s[i]<<' ';
	}
	return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区