社区讨论

模拟+枚举,递归调用了一次,1 3AC剩下WA悬关

P3392涂条纹参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lpsf1kqe
此快照首次捕获于
2023/12/05 22:08
2 年前
此快照最后确认于
2023/12/06 12:30
2 年前
查看原帖
还没有到能够下载测试数据的地步,求助一下只过了两组是因为哪里的问题 代码如下
CPP
//russia flag
#include<bits/stdc++.h>
using namespace std;
int N,M,stage=2510;//n,m<=50
int tran,counter;
char rec[54][54];//////用copy判断 
int stor[2510];////////两个不同类数组用逗号表达式隔开 
void draw(char C,int line,int st){//颜料,终点,起点 
	for(int j=st;j<line;j++){
		for(int i=0;i<M;i++){
			if(rec[i][j]!=C)
			/*rec[i][j]=C,这里如果改了的话不能重复使用*/tran++;
		}
	}
}	
void dig(char col,int line){
	if(col=='W'){//W给到的行数(之一)画完剩下的给B让B自己枚举 
		draw('W',line,0);//两行画完传递一个剩余行数给B 
		dig('B',N-line);
	}
	else if(col=='B'){//在递归函数内枚举B行数 ////////字符常量跟字符串标识错误 
		for(int i=1;i<=line-1/*上边的N-line,剩余行数-1给R留一个*/;i++){//i是B的行数 
			draw('B',N-line+i,N-line);
			dig('R',line-i/*给R剩下的行数*/);
		}
	}
	else if(col=='R'){
		draw('R',N,N-line);
		stor[counter]=tran;
		tran=0;
		counter++;
	}//****注意是否有数组与循控参数对不起来的错误 
}		
int main(){
	for(int i=0;i<2510;i++)
		stor[i]=2510;
	cin>>N>>M;
	for(int v=0;v<N;v++)//储存(从[0][0]开始) 
		for(int p=0;p<M;p++)
			cin>>rec[p][v]; 
	for(int i=1;i<N-1/*最大值为N-2*/;i++) //枚举A 
		dig('W',i);
	for(int i=0;i<(N-2)*(N-1);i++){
//		cout<<stor[i]<<" ";
		if(stor[i]<stage){//////////////////////////*stor[i]没有值*//*/*/*/*/*/ 
			stage=stor[i];
		}
	}
	cout<<stage;
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...