好久沒寫搜索題了,把以前的題寫過的重新寫了下
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 小果子 閱讀(441) |
評論 (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 小果子 閱讀(125) |
評論 (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 小果子 閱讀(1311) |
評論 (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 小果子 閱讀(172) |
評論 (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 小果子 閱讀(609) |
評論 (0) |
編輯 收藏