題意:中文題很好理解;
思路:開個三維陣列來存放地圖,bfs板子,只是在"#"的地方要換下位置就可以了。
ac**:題意:這個一道簡單的深搜題,並輸出路徑,把所有的情況都輸出出來。#include#include#include#include#include#include#include#includeusing namespace std;
#define inf 0x3f3f3f3f
#define ll long long
#define mod 1000000007
#define eps 1e-9
#define pi acos(-1.0)
#define mem(a,b) memset(a,b,sizeof(a))
char s[3][12][12];//三維陣列存圖
int n,m,k,a[10],t;
int book[12][12][12];//三維陣列標記
int to[4][2]= ,,,};//四個方向
struct node
;void bfs()
for(int i=0; i<4; i++)
;int t,n,m;
int book[120][120][119];//標記三個瓶子的狀態
void dfs()
for(int i=0; i<6; i++)//一共六種情況,自己推導一下
else
v.y=u.y;
}if(i==1)//z-->y
else
v.x=u.x;
}if(i==2)//x-->y
else
v.z=u.z;
}if(i==3)//y-->x
else
v.z=u.z;
}if(i==4)//x-->z
if(i==5)//y-->z
if(book[v.z][v.x][v.y]==0)}}
printf("no\n");
}int main()
else
dfs();
}return 0;
}
思路:直接用深搜板子寫即可,注意細節我在**中注發布來,不要被它的輸出嚇到了。
ac**:題意:三角形的三個點的座標,求出這個三角形的重心。#include#include#includeusing namespace std;
int s[21][3],d[21];
int n,book[30],l;
void dfs(int x,int y)
printf("%d",d[0]);
printf("\n");
return ;
}for(int j=0; j<=2; j++)
}return ;
}int main()
while(~scanf("%d",&n)&&n!=0)
return 0;
}
思路:超級簡單的一道題,套用公式即可:
ac**:題意:給乙個狀態讓你變成給定狀態12345678x,輸出路徑,如果不行輸出unsolvable;注意:路徑不唯一。#include#include#includeusing namespace std;
int main()}}
思路:把所有的情況都列出來,例1 2 3 4 5 6 7 x 8,只需將x向右移動一次,並記錄這個路徑。康托展開:詳細介紹: 大家也可以用map容器進行存路徑,也是可以的。
康托展開的**:for(int i=0; i<9; i++)
ac**:題意:給出魔方六面,每一面標號如上,給出一種排列,你需要把它復原,求最少步數和步驟,不能超過5步。1表示順時針,-1表示逆時針。#include#include#include#includeusing namespace std;
struct node
;int s[5][5],book[400000],jc[11];
char book1[400000];
int to[4][2]= ,,,} ;//方向d,r,u,l;
void bfs()
v.z=sum;
if(book[sum]==-1)//記錄路徑}}
}}int main()
if(book[num]==-1)
printf("unsolvable");
else
while(num!=0)
printf("\n");
}return 0;
}//1 2 3 4 x 5 6 7 8 rdllurdrulldrr
思路:用ida*搜尋,因為中心顏色確定,找出每個面與中心顏色不同的數量, 每次旋轉最多改變12個, 當不同數量/12>深度時剪枝。
ac**:#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define inf 0x3f3f3f3f
#define ll long long
#define mod 1000000007
#define mem(a,b) memset(a,b,sizeof(a))
#define pi acos(-1.0)
#define eps 1e-8
#define n 1000100
int n,m;
int flag,sum,res[10];
int row[6][8]=
,,, ,,
};int change[12][20]=
, ,,,
,,,,
,,
,};int cen[6]= ;
char s[11],c[60],ct[60];
int lenn(char *tmp)
return (ans+2)/3;
}void idastar(int step, char a, int fa)
char tmp[60];
for(int i=0; i<12; i++)
}int main()
flag=0;
sum=lenn(c);
while(sum<=5)
sum++;
}if(!flag)
printf("-1\n");
}return 0;
}
暑假集訓總結
華信暑假集訓總結 暑假乙個月的總結 第一 就是不夠細心,關於這一點,在前兩次的總結都有提到,但是自己這次還是沒有改正過來,說明自己確實是粗心,不過在以後的學習過程中還是要克服這個問題!第二 自己寫的 結構很亂,模擬較多時,經常都會找不到自己在 定義的,這個又是在 寫的。所以在接下來的過程中,自己還是...
暑假集訓總結
暑假集訓這就結束了,這個暑假算是上學以來最充實的乙個暑假了,乙個暑假除了休息的兩個周之外,都在好好的學習,雖然每天從早坐到晚,一直在電腦面前冥思苦想,一遍遍的問自己 我到底錯在哪了 但還是有好多的收穫,學習到了知識,提高了自己寫 的能力,鍛鍊了思考問題的能力,而且還提前體驗一把碼農的感覺,近乙個月的...
暑假集訓總結
三十五天的集訓生活,伴隨著我們最後一次的個人賽的結束而結束了。這乙個多月的三點一線的生活,讓我再次感受到,為自己目標奮鬥的滿足感!1,集訓,讓我收穫的不僅僅是學習新的知識,還教會了我做人做事的大道理。從剛開始的分組賽到個人賽再到組隊賽,整個暑假集訓經歷了二十幾場比賽,很感激自己能一直遵守比賽規則到最...