P2670 [NOIP2015 普及组] 扫雷游戏(c++实现)
可以尝试运用动态创建二维数组,这样就不用自己设立最大值了,担心数据量过大个人认为的优化措施:1.直接判断左边(右边)是否越界,来减少代码的运行时间,比直接八个方向一个个判断要节省时间。2.输出可以处理一个输出一个,没有必要存放起来再统一输出。ac代码:#include<iostream>#include<iomanip>#include<cstring>#inc
·
可以尝试运用动态创建二维数组,这样就不用自己设立最大值了,担心数据量过大
个人认为的优化措施:
1.直接判断左边(右边)是否越界,来减少代码的运行时间,比直接八个方向一个个判断要节省时间。
2.输出可以处理一个输出一个,没有必要存放起来再统一输出。
ac代码:
#include<iostream>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<algorithm>
using namespace std;
int main(){
char **array=NULL;
int row;
int col;
cin>>row>>col;
array=new char*[row];
for(int i=0;i<row;i++){
array[i]=new char[col];
}
char ch;
int i=0,j=0;
while(cin>>ch){
array[i][j]=ch;
j++;
if(j==col){
j=0;
i++;
}
}
for(i=0;i<row;i++){
for(j=0;j<col;j++){
if(array[i][j]=='*'){
cout<<"*";
}else{
int n=i,m=j;
int sum=0;
if(m-1>=0){//判断左边三个位置
if(array[n][m-1]=='*'){
sum++;
}
if(n-1>=0){
if(array[n-1][m-1]=='*'){
sum++;
}
}
if(n+1<row){
if(array[n+1][m-1]=='*'){
sum++;
}
}
}
if(m+1<col){//判断右边三个位置
if(array[n][m+1]=='*'){
sum++;
}
if(n-1>=0){
if(array[n-1][m+1]=='*'){
sum++;
}
}
if(n+1<row){
if(array[n+1][m+1]=='*'){
sum++;
}
}
}
if(n-1>=0){//判断上面的位置
if(array[n-1][m]=='*'){
sum++;
}
}
if(n+1<row){//判断下面的位置
if(array[n+1][m]=='*'){
sum++;
}
}
cout<<sum;
}
}
cout<<endl;
}
system("pause");
return 0;
}

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)