2016-5-26:实验室第一天
来源:互联网 发布:mac百度云下载没反应 编辑:程序博客网 时间:2024/06/13 23:53
今天是进入实验室的第一天,太久没敲代码,以前掌握的知识现在都是一团糟。高精度快速幂什么的基本都忘了,就记得数塔,贪心之类的入门算法,尴尬。
重新学习准备从搜索开始学起,今天就学下搜索,dfs深搜。同时记录一下新学到的杂乱无章的各种知识点,反正是复制粘贴的,也不费事,哈哈哈。
A.构造函数
构造函数是你在创造了类的一个对象的时候首先运行的函数 可以有参数 可以无参数 也可以重载 你可以发现你在定义类的成员的时候无法赋初始值 构造函数的很重要的一个用处就是初始化里面的成员变量。
B.在C语言中,&有三种作用,分别如下:
1. 取地址。单目运算符。用来取一个变量的地址。
比如
int i, *p;
p = &i;//这里的&作用是取变量i的地址。
2. 位操作中的与操作运算符。
也就是常说的and操作,双目运算符。
计算的时候按位计算,&两边操作数对应位上全为1时,结果的该位值为1。否则该位值为0
比如
0x12&0x23 转为二进制为:
B00010010&B00100011,
按位计算结果为B00000010,
即结果为0x02。
3. 当两个&&一起用的时候,表示为逻辑运算中的与运算。
逻辑运算结果只有0和1两种结果。
一般在&&两边是两个逻辑表达式。
当两个表达式值均为1时,&&运算结果为1,否则为0。
比如
2>1 && 0<1 这个的值为1&&1 = 1。
1>2 && 2>0 这个值为0&&1 = 0。
1>2 && 2>3 这个值为0&&0=0。
C.百练(openjudge)-2815城堡问题:
题目链接:http://bailian.openjudge.cn/practice/2815/
//2016-5-26:城堡问题
//递归代码;
#include <iostream>
#include <cstring>
#include <stack>
#include <algorithm>
using namespace std;
int color[55][55];
int room[55][55];
int x,y;
int maxroomarea,roomarea,roomnum;
void dfs(int i,int j)
{
if(color[i][j]!=0)
return ;
color[i][j]=++roomarea;
if((room[i][j]&1)==0) dfs(i,j-1);
if((room[i][j]&2)==0) dfs(i-1,j);
if((room[i][j]&4)==0) dfs(i,j+1);
if((room[i][j]&8)==0) dfs(i+1,j);
}
int main()
{
while(cin>>x>>y)
{
//inp;
for(int i=1; i<=x; i++)
{
for(int j=1; j<=y; j++)
{
cin>>room[i][j];
}
}
//run;
maxroomarea=0;
roomnum=0;
memset(color,0,sizeof color);
for(int i=1; i<=x; i++)
{
for(int j=1; j<=y; j++)
{
if(color[i][j]==0)
{
roomnum++;
roomarea=0;
dfs(i,j);
maxroomarea=max(roomarea,maxroomarea);
}
}
}
cout<<roomnum<<endl<<maxroomarea<<endl;
}
return 0;
}
涂色记录已走过的路径点,大概就是这道题的重点了吧。
D.nefuoj-970:蛇形填数
题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=970
代码:
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int main()
{
int x,y,a[21][21],n,num;
while(cin>>n)
{
x=1;y=n;
memset(a,0,sizeof(a));
num=1;
a[x][y]=num;
while(num<n*n)
{
while(!a[x+1][y]&&x+1<=n) a[++x][y]=++num;//向下
while(!a[x][y-1]&&y-1>=1) a[x][--y]=++num;
while(!a[x-1][y]&&x-1>=1) a[--x][y]=++num;
while(!a[x][y+1]&&y+1<=n) a[x][++y]=++num;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
if(j!=n) cout<<a[i][j]<<' ';
else cout<<a[i][j]<<endl;
}
}
}
因为好长一段时间都没想出来所以把代码贴在这里,来纪念我智障的那一段时间。
poj-1190:生日蛋糕
这道题应该是讲深搜里面的剪枝问题吧,三个小时最后没搞懂,gg;
- 2016-5-26:实验室第一天
- 2016-5-28:实验室第三天
- 2016-5-30:实验室第五天
- 感触--进实验室第一天(2016年8月22日)
- 2016-6-1:实验室第七天
- 2016-6-2:实验室第八天
- 2016-6-3:实验室第九天
- 实验室第一周
- 实验室第四周工作报告
- 实验室第四周工作报告
- 实验室第四周
- 2008年8月8号,晴,热。实验室放假的第一天。今天是儿子的一岁生日
- 2014 3 26 第一天
- 写在2016新年第一天
- 写在2016年第一天
- 2010-5-31 第一天
- 第一天(5道)
- 第一天
- [POJ 1328] Radar Installation (区间贪心)
- PHP error_reporting() 错误控制函数功能详解
- Html中的下拉列表Select
- swift画图
- Android 开发中错误收集(一)
- 2016-5-26:实验室第一天
- iOS Archive 后进入other items,generic XCode Archive
- afn3.0
- swift基础之错误异常
- 第十三周项目3—形状类族的中的纯虚函数
- Android开发之多线程下载文件
- PHP register_shutdown_function函数的深入解析
- Contains Duplicate
- SCons 简介与安装