acm第8周总结

       由于前几个周题目看的比较慢,所以感觉这个周有些匆忙,尤其是后面几道题基本没来得及看题解只是匆匆看了题目,这也导致做题时间不够多。为了能A出一定数量的题目,我还是参考了题解。随着这个学期已经过去将近一半,感觉学习积极性不如学期刚开始那么高,态度也有点敷衍,需要尽快调整自己的学习态度。在做题的过程中,虽然在写代码之前感觉思路挺对的,但是写的过程中就发现漏洞百出,不是进入死循环就是测试数据对但是提交后的测试点有错误,或者是测试点超时,最大的问题是细节处理的不到位,就比如输入数组时有时由于题目限制必须要让数组下标从1开始,而不能是0;有些变量需要在特定的位置赋值;

       下面写一下我做的一道印象比较深刻的题目,这道题困扰了我很长时间,最后发现保存全是数字的矩阵要用字符数组而不能用整型数组,否则会进入死循环。

#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[110][110];
int sum,flag[110][110]={0};
int X[4]={0,0,1,-1},Y[4]={1,-1,0,0};
void dfs(int x,int y,int s)
{
flag[x][y]=1;
for(int i=0;i<4;i++)
{
int x0=x+X[i];
int y0=y+Y[i];
if(x0>=1&&x0<=n&&y0>=1&&y0<=m
&&flag[x0][y0]==0&&a[x0][y0]!='0')
dfs(x0,y0,s);
}
return;
}
int main() 
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]!='0'&&flag[i][j]==0)
dfs(i,j,++sum);
cout<<sum;
return 0;  
}

另外,在减小代码的时间复杂度方面我也不怎么会。这周我做到的题绝大多数用的都是dfs,用bfs的很少,之前看搜索的时候也是主要看的dfs,感觉有些过于偏重于dfs而导致没怎么掌握bfs的基本写法,另外,做题的时候一定要保持清晰的思维以及注意力集中,一些地方可以在纸上写一写,只是单纯地盯着屏幕想的话,经常想到一半思维就混乱了或者就想到别的地方去了,我因此浪费了不少时间。

       总之,虽然我感觉自己学的不是很好,但是搜索练习专题已经结束,我们马上要开始并查集的专题,由于有些其它课程已经结束要开始考试,再加上我参加了不少社团还有额外作业要完成,因此以后会更加的忙碌,但是我还是会尽力找一些空余时间再研究一下搜索,下一个并查集专题一定要更加认真的学习,继续努力!

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值