文章
2
粉丝
35
获赞
0
访问
921
先合并,再移动
在合并的时候,用m,n来分别代表遍历到的元素的行和列,p,q分别代表要和这个元素合并的元素的行和列。(m,n是合并后要乘双倍的元素位置,p,q是合并后变成0的元素的位置)
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x,a[10][10]={0};
int b[10][10]={0};//这是移动后的方阵
int m,n;//合并后数字双倍的位置
int p,q;//合并后变成0的位置
scanf("%d",&x);
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++)
scanf("%d",&a[i][j]);
}
//先合并
for(int j=1;j<=4;j++){
for(int i=1;i<=3;i++){
bool flag=false;//标志是否找到可以合并的项
if(x==1){//j是列
m=i;
n=j;
p=m+1;
q=n;
if(a[m][n]==0)
continue;
else{
while(a[p][q]==0&&p<=3)//直到找到可以合并的非零项
p+=1;
...
登录后发布评论
暂无评论,来抢沙发