2023年春3月月賽題解

2021-10-23 03:41:22 字數 4335 閱讀 7011

問題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的圖,上面有若干個怪,每個怪有一定的血,攻擊,防禦,以及攻擊獎勵,防禦獎勵。玩過魔塔的童鞋應該很清楚,每打乙個怪,消滅他,可以獲得一定的攻擊防禦獎勵,消滅所有的怪,就算成功了。此題是外掛程式摸式,無限血,不過也存在無法過關的情況,求消滅所有的怪,受到的...