解题思路:
注意事项:注意糖块融合后形成的糖块和后面一个糖块可以融合
参考代码:
#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 人评分
妹子杀手的故事 (C语言代码)浏览:1298 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:910 |
字符逆序 (C语言代码)浏览:706 |
关于float,double变量的几点说明浏览:1926 |
Tom数 (C语言代码)浏览:758 |
字符逆序 (C语言代码)浏览:675 |
时间转换 (C语言代码)浏览:698 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:856 |
1415题求解浏览:681 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:539 |