考核过后感觉自己的学习方式有很多问题。平时周任务不能看着博客就模仿着写出来,或者照搬别人的思路,应该有充分的理解,保证自己不看别人的博客时,自己也可以独立写出来。平时要提高效率。比赛时要加快速度,理清思路。注意细节!

三道原题。

网线切割

二分查找经典题目

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<algorithm>
 5 #define inf 0x3f3f3f3f
 6 using namespace std;
 7 const int maxn=100;
 8 int n, k ;
 9 double a[maxn]; 
10 bool check(double x){//检查是否达到需要的数量 
11     int ans=0;
12     for(int i=0; i<n; i++){
13         ans+=a[i]/x;
14     }
15     if(ans>=k) return true;
16     else return false;    
17 } 
18 int main(){
19     cin >> n >> k ;
20     for(int i=0; i<n; i++)
21         cin >> a[i];
22     int l=0, r=inf;
23     for(int i=0; i<100; i++){//进行二分,100是次数,从而保证精度 
24         double mid=(l+r)/2.0;
25         if(check(mid)) l=mid;
26         else r=mid;
27     }
28     printf("%.2f",floor(r*100)/100);//要小于0.01m; floor向下取整函数
29     //头文件#include<cmath> 
30     return 0;
31 }
32 /*
33 4 11
34 5.39
35 8.02
36 7.43
37 4.57 
38 */

View Code

八皇后(复刻)

dfs经典题目

 1 #include<cstdio> 
 2 #include<iostream>
 3 #define inf 0x3f3f3f3f
 4 using namespace std;
 5 const int maxn=105;//注意范围要足够大 
 6 int  a[maxn], b[maxn],c[maxn],d[maxn];
 7 int n,ans=0; 
 8 void print(){
 9     ans++;
10     if(ans<=3)//保证输出三个解 
11     {
12         for(int k=1; k<=n; k++)
13             cout << a[k] << " " ;
14         cout << endl ;    
15     } 
16 }
17 void dfs(int i){
18     if(i==n+1) //寻找完所有皇后输出其纵坐标 
19     {
20         print();//自定义输出函数 
21         return ;    
22     }
23     else
24     {
25         for(int j=1; j<=n; j++)//寻找可放置位置 
26         {
27             if(b[j]==0&&c[i+j]==0&&d[i-j+n]==0)// 是否符合条件 
28             {
29                 a[i]=j;//占领位置 
30                 b[j]=1;//占领纵列 
31                 c[i+j]=1;//占领对角线(左下-右上) 
32                 d[i-j+n]=1;//占领对角线(左上-右下) 
33                 dfs(i+1);//寻找下一个皇后坐标 
34                 b[j]=0;//回溯 
35                 c[i+j]=0;
36                 d[i-j+n]=0;
37             }
38         }
39     }
40     return ;
41 }
42 int main(){
43     cin >> n ;
44     dfs(1);//从第一个皇后 开始寻找坐标 
45     cout << ans ;//输出 
46     return 0;
47 }
48 //八皇后问题 仅输出前三个解的坐标以及总共解的个数 

View Code

 迷宫

经典bfs题目(+拐弯限制问题)

 1 //注意题目陷阱 例:输入时的 行/列 
 2 //拐弯问题可以在确定一个方向后一直走下去直到不能走或到终点 
 3 
 4 #include<cstdio>
 5 #include<cstring> 
 6 #include<iostream>
 7 #include<queue>
 8 #define inf 0x3f3f3f3f
 9 using namespace std;
10 const int maxn=105;
11 int t, m, n; 
12 struct node{
13     int x, y;
14     int dir;
15 }st,ed,ss,tt;
16 int turn,fx,fy,sx,sy;
17 int dx[]={-1,1,0,0},dy[]={0,0,-1,1};
18 bool vis[maxn][maxn];
19 char maps[maxn][maxn];
20 int bfs(){
21     queue <node> que;
22     st.dir=-1;
23     vis[ss.x][ss.y]=true;
24     que.push(st);
25     while(!que.empty())
26     {
27         ss=que.front();
28         que.pop();
29         
30         if(ss.x==ed.x&&ss.y==ed.y&&ss.dir<=turn) return 1;//起点即终点进行判断 
31         for(int i=0; i<4; i++)
32         {
33             tt.x=ss.x+dx[i];
34             tt.y=ss.y+dy[i];
35             tt.dir=ss.dir+1;//已经确定了第一次的方向将-1变0 
36             if(tt.dir>turn) continue;
37             while(tt.x>=1&&tt.x<=m&&tt.y>=1&&tt.y<=n&&maps[tt.x][tt.y]!='*')
38             {//符合基本条件 
39                 if(!vis[tt.x][tt.y])//
40                 {
41                     que.push(tt);
42                     vis[tt.x][tt.y]=true;
43                 }
44                 tt.x+=dx[i];
45                 tt.y+=dy[i];//继续走下去 
46                 if(tt.x==ed.x&&tt.y==ed.y&&tt.dir<=turn) return 1;    
47             }
48         }
49     }
50     return 0;
51 } 
52 int main(){
53     cin >> t ;
54     while(t--)
55     {
56     cin >> m >> n ;
57     for(int i=1; i<=m; i++)
58         for(int j=1; j<=n; j++)
59             scanf(" %c", &maps[i][j]);
60      cin>>turn>>st.y>>st.x>>ed.y>>ed.x;//!!!注意细节 注意哪个是行哪个是列 
61      if(bfs())    printf("yes\n");
62      else printf("no\n");
63      memset(vis,0,sizeof(vis));
64     }
65     
66     return 0;
67 }
68 /*
69 2
70 5 5
71 ...**
72 *.**.
73 .....
74 .....
75 *....
76 1 1 1 1 3
77 5 5
78 ...**
79 *.**.
80 .....
81 .....
82 *....
83 2 1 1 1 3
84 */
no
yes

2020-12-19 21:09:31

有错误的地方1请大佬们多多指点!

版权声明:本文为whd1696187220原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/whd1696187220/p/14160595.html