問題a string
1.題意:找出乙個字串在另乙個字串出現的次數
2.解法:此題解法較多,看**就應該知道了
第一種解法
#include
#include
using
namespace std;
intmain()
cout << count << endl;
}return0;
}
第二種解法#include
using
namespace std;
intf
(char
*a,char
*b)return count;
}int
main()
return0;
}
第三種解法#include
#include
using
namespace std;
intmain()
}if(! cmp) count ++;}
} cout << count << endl;
}return0;
}
問題b 小明吃薯條#include
intmain()
}printf
("%d\n"
,sum);}
return0;
}
問題c 期末成績#include
using
namespace std;
intmain()
for(
int i =
0; i < n; i ++
)
cout << num << endl;}}
return0;
}
問題 d: walk in maze
bfs解法
#include
#include
#include
#include
using
namespace std;
typedef pair<
int,
int> p;
//重新命名
const
int inf =
1e8;
int n;
int num[
1000][
1000];
int d[
1000][
1000];
int start_position_x,start_position_y;
int end_position_x,end_position_y;
int lr[4]
=;//lr表示向左右走right && left
int ud[4]
=;//ud表示向上下走up && down
//lr和ud連用可以有幾種表示,分別表示的是(0,1),就是x不變,y加1
intbfs()
}
queueque;
que.
push(p
(start_position_x,start_position_y));
d[start_position_x]
[start_position_y]=1
;while
(que.
size()
)}}return d[end_position_x]
[end_position_y];}
intmain()
}
cin >> start_position_x >> start_position_y;
cin >> end_position_x >> end_position_y;
start_position_x --
; start_position_y --
; end_position_x --
; end_position_y --
;int value =
bfs();
if(value == inf)
else
}return0;
}
dfs解法#include
#include
using
namespace std;
int num[
1001][
1001];
bool cmp =
false
;//判斷是否到終點
int minx =
1e7;
int n;
int ud[4]
=;int lr[4]
=;int visit[
1001][
1001];
int a,b,c,d;
void
dfs(
int k,
int l,
int g)
//設立邊界,到了邊界就回溯
if(num[k]
[l]==1)
//邊界
if(k == c -
1&& l == d -1)
//到達終點需要判斷是不是最小值
visit[k]
[l]=1;
// cout << "k:" << k << ' ' << "l:" << l << " " << "g:" << g << "num[k][l]" << num[k][l] for(
int i =
0; i <
4; i ++
)// dfs(k + 1, l + 0, g + 1);//跟上面哪個for迴圈一樣的效果
// dfs(k + 0, l + 1, g + 1);
// dfs(k - 1, l + 0, g + 1);
// dfs(k + 0, l - 1, g + 1);
visit[k]
[l]=0;
}int
main()
else
}return0;
}
問題 e: 有重複全排列 [2*]#include
#include
using
namespace std;
const
int maxn =
1010
;int num[maxn]
;int n;
void
dfs(
int x)
cout << endl;
return;}
else}}
intmain()
}
問題 f: 最長公共子串行#include
#include
using
namespace std;
const
int n =
1010
;int f[n]
[n];
intmain()
} cout << f[
strlen
(s1 +1)
][strlen
(s2 +1)
]<< endl;
}return0;
}
問題 g: 倒楊輝三角形#include
using
namespace std;
const
int maxn =
1001
;int num[maxn]
[maxn]
;void
create()
}}}int
main()
for(
int j =
1; j < i; j ++
) cout<[i]
}
問題 h: 二叉樹
這個題很簡單的,估計有很多人被名字嚇到了,這個題**看下就行了因為寫的很差。
#include
using
namespace std;
intmain()
while
(b)for
(int i =
0; i < z;i++)}
if(t ==1)
break;}
}return0;
}}
2023年春4月月賽題解
問題a include include using namespace std int m,n const int n 1010 int dp n n intmain cout dp m n endl return0 問題b include include include using namespa...
洛谷7月月賽題解(2020)
醜話說在前面,我只寫了前三個的題解 因為有人告訴我第四題沒有價值!標題黨,廣大oier看了直呼內行!真就簽到題唄。反正就是把冪魔改成開根向下取個整。看 吧。int main 混,混凝土?擦汗 哎呀不就等腰三角形嗎,分類討論一手等腰和等邊,選取 1 2 len 1 的邊進行一下組合運算,就像我這樣的蒟...
福大3月月賽 魔塔
by cxlove 又是乙個神題,給出乙個n m的圖,上面有若干個怪,每個怪有一定的血,攻擊,防禦,以及攻擊獎勵,防禦獎勵。玩過魔塔的童鞋應該很清楚,每打乙個怪,消滅他,可以獲得一定的攻擊防禦獎勵,消滅所有的怪,就算成功了。此題是外掛程式摸式,無限血,不過也存在無法過關的情況,求消滅所有的怪,受到的...