好久没写搜索题了,把以前的题写过的重新写了下
http://acm.hdu.edu.cn/showproblem.php?pid=1241
1 #include <iostream>
2
3 using namespace std;
4 const int N=101;
5 const int M=101;
6 char mp[N][M];
7 int dir[8][2]={1,0,-1,0,0,1,0,-1,1,1,1,-1,-1,-1,-1,1};
8 int m,n;
9 void Input()
10 {
11 for(int i=0;i<m;i++)
12 for(int j=0;j<n;j++)
13 cin>>mp[i][j];
14 }
15 void dfs(int i,int j)
16 {
17 if(mp[i][j]=='@')mp[i][j]='*';
18 for(int r=0;r<8;r++){
19 int x=i+dir[r][0];
20 int y=j+dir[r][1];
21 if(x<0||y<0||x>=m||y>=n||mp[x][y]=='*')continue;
22 dfs(x,y);
23 }
24 return ;
25 }
26 int process()
27 {
28 int ans=0;
29 for(int i=0;i<m;i++){
30 for(int j=0;j<n;j++){
31 if(mp[i][j]=='@'){
32 dfs(i,j);
33 ++ans;
34 }
35 }
36 }
37 return ans;
38 }
39 int main()
40 {
41 while(cin>>m>>n,m+n){
42 Input();
43 cout<<process()<<endl;
44 }
45 return 0;
46 }
posted @
2008-07-21 11:46 小果子 阅读(434) |
评论 (0) |
编辑 收藏
(1).how do a program run:(example hellp.c)
four parts:pre-processor(.i .text)->compiler(.s text)->assembler(.o binary)->Linker(.exe binary)
1.pre-processor:add the head file to hello.c;
2.compiler:translate high-level language(c++ or c ==)to low-level language(assembly language);
3.assemble:translate assembly language to binary file(manchine language ) manchine instruction;
4.Linker:the linker handles merging the c library and hello.c(merging printf.o and hello.o to hello file) to executable object program,
then be loaded into memory and executed by the system.
posted @
2008-07-11 20:28 小果子 阅读(117) |
评论 (0) |
编辑 收藏
(转)在单文档中:
1)
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
// TODO: Add your message handler code here and/or call default
lpMMI->ptMinTrackSize.x=655;
lpMMI->ptMinTrackSize.y=528;
lpMMI->ptMaxTrackSize.x=655;
lpMMI->ptMaxTrackSize.y=528;
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
2)
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style&=~WS_MAXIMIZEBOX;
cs.style&=~WS_THICKFRAME;
cs.cx=400;
cs.cy=300;
return TRUE;
}
3)
//固定窗口的大小 400*400
void CMysteryDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
if( pRect->right - pRect->left <400 )
pRect->right = pRect->left + 400;
if( pRect->bottom - pRect->top < 400 )
pRect->bottom = pRect->top + 400;
CDialog::OnSizing(fwSide, pRect);
}
有点闪烁>>
win32中:
case WM_CREATE:
style = GetWindowLong(hWnd, GWL_STYLE);
style = style & (~WS_THICKFRAME) | WS_DLGFRAME;
SetWindowLong(hWnd, GWL_STYLE, style);
break;
posted @
2008-05-27 16:49 小果子 阅读(1306) |
评论 (0) |
编辑 收藏
5.17 浙江省赛
今天是参加省赛日子,集训了将近一个多月的日子,练习赛也练了N多,终于到出征日子,“兴奋”;
去浙大紫金港路上,司机居然也迷路了,来了次“深搜”,^_^。。
到后是露天的开幕式,完后就开始试机了。。。发现vc 6.0没装,不过DEVC++可以用,虽然不情愿,
不过没办法(忍),不过不能忍的的那调试。。。绝对BT,不过幸好下午比赛时已安装好vc,不过以后
还是多用用devc++,(微软的东西用多,会懒,^_^)。。。
正赛:
比赛时12:00-17:00 五个小时,12:00准备开始,试机时已经知道有12道题目,不过没想到的是有很多
水题,向往常练习一样,cyf看前面四题,我看中间四题,ggd看最后四题,我从E开始看,水题就来了。。
求多项式的导数,把系数输出就行了。。。会点编程的都会了。。。于是上机敲,敲完了,发现测试数据
没过,(BS下自己),我敲代码时,很多队伍过了F题,ggd也看了F题,说简单题,于是我把敲完的代码
print,ggd上来敲,完后一次Y,敲完后,cyf跟我抢机子,说A,B都水题,他先敲,于是cyf敲完A,完后也
一次Y,于是我上去敲完,完后一次Y,cyf于是接着敲B,说MST,直接敲,敲的同时我也看G题,看完后也发现
是中等模拟题,处理时繁琐,不过还好,正好这时,cyf敲完B,一次Y,于是我上去敲这漫长的G,中间cyf看C,D,
完后比较难,转移到后面,看H题,ggd也是看后面,不知道后面去做D去了(比赛一大失误),我敲G,他们俩看题,中间cyf说H题可以搜索做(后来发现他题意理解错误),我叫他纸上写好,我继续敲,完后他上来敲,我把
剩下的写纸上,不一会,就完了。cyf也完了。。。测试数据他过后,交了次,WA,于是我上去敲完G题,测试数据
过后,当时我读字符串时用了getline(cin,ss),我也知道vc98和vc2003对处理这个不一样,98是敲完字符串敲两个回车才有反应,vc2003(及以上版本)敲完回车就出解了。不过当时也想了下,不过还是交了,WA,(郁闷),
于是我print代码,看自己的,中间ggd和我讨论D题,他说了一大通,老实说我惦记着G题,中间cyf又改了H题,交了一次还是WA,于是我上去调试我的代码,发现确实没什么错误,一想,浙大用的是G++,getline(cin,ss)也是两个回车才出解的,于是我无奈的把它改成c风格的读入,然后初始化字符串(比较无奈),完后,交了,返回Y,(开心),唉,不能怪谁,怪自己还得考虑下人家的编译器,(自己学校OJ用了03的编译器惯了),完后,cyf继续H题,(也就是这题卡住了我们,到最后集体看这题),换了种方法,一维dp,他敲完后交了,WA,(郁闷),我当时看了最后一题,题意大致了解,cyf和ggd都看了这题,说题意不是很明白,就是在xy平面找一个点,使这点的的E最大,当时因为没看清题目描述,想着平面xy找点,想着是实数的,所以有无数个,不知道怎么下手(其实题意是整数点,而且题目限定了平面的区域,所以直接枚举就可以了。。这题比较失败),所以跳过了。一看K题是福娃的,一看一大张图(恐惧感就来了,认为一定很难,后来发现也是一道水题),因为cyf的H题一直没搞出来,所以我也看H题,最后一小时封版后,我们三集体做H题(比较失败),原来cyf一开始就理解错了,而我,也想出了三维dp(不知道对不对),虽然ggd帮着改完cfy的代码最后两三分Y了。但是确实比较失败,导致其他一些可以做的没做。。。
结束语:总结了这次比赛,总体难度不是很高(没自己的学校的邀请赛题目好,自我感觉),区分度就不是很好,导致一大堆都是》=5的,(囧),做出8题算正常发挥,7题马马虎虎,6题的就有点不太满意了。。。我们队最后A了6题,(自我感觉可以A8题,正常+顺利的话),拿了一块铜牌(囧),(安慰奖算自我感觉,这暑假已决定好好练,明年的这时候估计也准备考研了(80%几率)),不过总体我们学校还好,唉,如果我们学校RP好点,把杯捧回来和最佳女生奖都拿来,(男一队和女一队都落后浙大多了一两次罚时,就差那么一点),真希望是这样。。。
新的征程又开始了,新一轮循环又打开序幕,为明天省赛充电,今天完后,一大堆老队员退役了,(寒),不过还是相信的HDU的acm不会沉默,至少像刘老师所说,一两年内不会衰落,(当然也得靠大家努力训练了),为
HDU美好的ACM 大家努力。。。
人家打篮球是“无兄弟,不篮球”,我们是“无兄弟,不AC”,呵呵,认识了许多好伙伴(高兴)。。。
ps:今天看到“驴”队和李老大(高兴,呵呵,都是牛牛级的),发现“驴”队变胖了。。(好奇,^_^)
posted @
2008-05-19 13:17 小果子 阅读(169) |
评论 (0) |
编辑 收藏
题目意思说用最少的次数翻动使所有的面是白色或黑色:
思路:通过枚举第一行的状态(16种状态),得出答案..
附上code:
1 #include <iostream>
2 #include <string>
3 #include <bitset>
4
5 using namespace std;
6 int map[10][10];
7 int opr[10][10];
8 int ans,zhen;
9 void hanshu(int n)
10 {
11 for(int i=0;i<16;i++){
12 int cnt=0;
13 bitset<4> bit(i);
14 for(int r=1;r<=4;r++)
15 for(int j=1;j<=4;j++)
16 opr[r][j]=map[r][j];
17 for(int r=0;r<4;r++){
18 if(bit[r]==1){
19 cnt++;
20 opr[1][r+1]^=1;
21 opr[1][r]^=1;
22 opr[2][r+1]^=1;
23 opr[1][r+2]^=1;
24 }
25 }
26 for(int r=2;r<=4;r++){
27 for(int j=1;j<=4;j++){
28 if(opr[r-1][j]==n){
29 cnt++;
30 opr[r-1][j]^=1;
31 opr[r][j-1]^=1;
32 opr[r][j]^=1;
33 opr[r][j+1]^=1;
34 opr[r+1][j]^=1;
35 }
36 }
37 }
38 bool prim=false;
39 for(int i=1;i<=4;i++){
40 if(opr[4][i]==n){
41 prim=true;
42 }
43 }
44 if(!prim&&cnt<ans){
45 zhen=0,ans=cnt;
46 }
47 }
48 }
49 int main()
50 {
51 string ss;
52 while(cin>>ss){
53 ans=0x7fffffff;
54 zhen=-1;
55 memset(map,0,sizeof(map));
56 memset(opr,0,sizeof(opr));
57 for(int i=0;i<ss.size();++i){
58 if(ss[i]=='b')map[1][i+1]=0;
59 else map[1][i+1]=1;
60 }
61 for(int i=2;i<=4;i++){
62 cin>>ss;
63 for(int j=0;j<ss.size();j++){
64 if(ss[j]=='b')map[i][j+1]=0;
65 else map[i][j+1]=1;
66 }
67 }
68 hanshu(0);
69 hanshu(1);
70 if(zhen!=-1)cout<<ans<<endl;
71 else cout<<"Impossible"<<endl;
72 }
73 return 0;
74 }
75
posted @
2008-05-15 20:22 小果子 阅读(592) |
评论 (0) |
编辑 收藏