Day08
2026-07-29 20:15:12
发布于:广东
第7题
#include <bits/stdc++.h>
using namespace std;
const int maxn = 11;
int n; // 定义n
bool used[maxn]; // 定义used数组,used[i]=true表示i这个数字用过
int p[maxn]; // 定义p数组,p[i]表示i位置放的数字
int a[maxn];
void dfs(int idx)
{ // 定义函数dfs(idx),表示1 \times idx-1 位置已经放好数字,考虑第idx个位置放什么
if (idx == n + 1) { // 判断idx==n+1,判断是否找到一种排列
for (int i = 1; i <= n; i++)
cout << p[i] << " "; // 找到了,一种排列,for循环输出就行
cout << "\n"; // 输出换行
return; // 返回
}
for (int i = 1; i <= n; i++) { // for循环枚举第idx个位置想放i这个数字
if (!used[i]) { // 判断i这个数字有没有用过
p[idx] = a[i]; // idx位置放i这个数字
used[i] = true; // 标记i这个数字用过
dfs(idx + 1); // 去考虑下一个位置放什么
used[i] = false; // 重新标记为没有用过
p[idx] = 0; // 表示idx这个位置不放i这个数字了
}
}
}
int main()
{
cin >> n; // 输入n
for(int i=1;i<=n;i++) cin>>a[i];
dfs(1); // 调用dfs(1),考虑第一个位置放什么
return 0;
}
第八题
#include<bits/stdc++.h>
using namespace std;
bool vis[20][20];//定义vis数组,vis[i][j]标记(i,j)是否被访问过
char MAP[20][20];//定义MAP数组,MAP[i][j]=false表示不是障碍物 MAP[i][j]=true是障碍物
int n, m, t, ans;//定义n,m,t,ans,sx,sy,ex,ey
int dir[4][2] = { 0,1,1,0,0,-1,-1,0 };//定义方向数组
void dfs(int x, int y) {//定义函数dfs(x,y)表示当前在(x,y)位置
if (x == n && y == m) { //判断是否x==fx且y==fy,判断是否到达终点
ans++;//路径数量+1
return; //返回
}
for (int i = 0; i < 4; i++) {//for循环遍历方向数组
int nx = x + dir[i][0], ny = y + dir[i][1];//求出邻居位置(nx,ny)
if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && !vis[nx][ny] && MAP[nx][ny] == '*') {//判断邻居是否在地图内且没有被访问过且不是障碍物,如果成立就走过去
vis[nx][ny] = 1;//vis[nx][ny]=1,标记(nx,ny)访问过
dfs(nx,ny);//去(nx,ny)的位置(从(nx,ny)开始搜索)
vis[nx][ny] = 0;//vis[nx][ny]=0,(nx,ny)位置所有的方向都尝试过了, 回退,将(nx,ny)位置标记为未访问过
}
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {//for循环输入t个障碍物的位置并标记
for(int j=1;j<=m;j++){
cin>>MAP[i][j];
}
}
vis[1][1] = 1;
dfs(1,1); //调用dfs(sx,sy),从(sx,sy)位置开始搜索
cout << ans;//输出答案
return 0;
}
第九题
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
string s;
ll ans;
bool vis[20];
void dfs(ll idx,string str){ // idx是递归层数
if(idx == 8+1){
ans++;
if(str == s){
cout<<ans;
exit(0);
}
}
for(ll i = 0; i <= 9 ; i++){
if(!vis[i]){
char ch = i+'0';
vis[i] = 1;
dfs(idx + 1, str + ch);
vis[i] = 0;
}
}
}
int main() {
cin>>s;
dfs(1,"");
return 0;
}
第十题
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll dx[] = {1,-1,0,0};
ll dy[] = {0,0,1,-1};
char ma[110][110];
bool vis[110][110];
ll cnt[20];
ll n,m;
void dfs(ll x,ll y,char ch){
vis[x][y] = 1;
for(ll i = 0; i < 4 ; i++){
ll nx = x + dx[i];
ll ny = y + dy[i];
if(nx<1||nx>n||ny<1||ny>m) continue;
if(vis[nx][ny]) continue;
if(ma[nx][ny]!=ch) continue;
dfs(nx,ny,ch);
}
}
int main() {
cin>>n>>m;
for(ll i = 1; i <= n ; i++){
for(ll j = 1; j <= m ; j++){
cin>>ma[i][j];
}
}
for(ll i = 1; i <= n ; i++){
for(ll j = 1; j <= m ; j++){
if(!vis[i][j]){
cnt[ma[i][j]-'0']++;
dfs(i,j,ma[i][j]);
}
}
}
for(ll i = 1; i <= 9 ; i++){
cout<<cnt[i]<<" ";
}
return 0;
}
全部评论 16
/** * _ooOoo_ * o8888888o * 88" . "88 * (| -_- |) * O\ = /O * ___/`---'\____ * . ' \\| |// `. * / \\||| : |||// \ * / _||||| -:- |||||- \ * | | \\\ - /// | | * | \_| ''\---/'' | | * \ .-\__ `-` ___/-. / * ___`. .' /--.--\ `. . __ * ."" '< `.___\_<|>_/___.' >'"". * | | : `- \`.;`\ _ /`;.`/ - ` : | | * \ \ `-. \_ __\ /__ _/ .-` / / * ======`-.____`-.___\_____/___.-`____.-'====== * `=---=' * ............................................. * 佛曰:bug泛滥,我已瘫痪! * * 在有些时候佛祖是帮不了你们的哈哈哈! */2026-07-29 来自 广东
3?!这么强!?
2026-07-29 来自 广东
3/** * _ooOoo_ * o8888888o * 88" . "88 * (| -_- |) * O\ = /O * ____/`---'\____ * . ' \\| |// `. * / \\||| : |||// \ * / _||||| -:- |||||- \ * | | \\\ - /// | | * | \_| ''\---/'' | | * \ .-\__ `-` ___/-. / * ___`. .' /--.--\ `. . __ * ."" '< `.___\_<|>_/___.' >'"". * | | : `- \`.;`\ _ /`;.`/ - ` : | | * \ \ `-. \_ __\ /__ _/ .-` / / * ======`-.____`-.___\_____/___.-`____.-'====== * `=---=' * 拜佛处 * ............................................. * 佛祖保佑 永无BUG * * 祝大家考试考好 天天向上2026-07-29 来自 广东
3徐老师你
循循善诱
因材施教
诲人不倦
教导有方
春风化雨
润物无声
兢兢业业
孜孜不倦
废寝忘食
一丝不苟
呕心沥血
勤勤恳恳
温文尔雅
风度翩翩
博学多才
为人师表
和蔼可亲
德才兼备
良师益友
亦师亦友
无微不至
平易近人
谆谆教诲
耐心细致2026-07-29 来自 广东
2NB
2026-07-29 来自 广东
0


2026-07-29 来自 广东
0



2026-07-29 来自 广东
2老师你人真好



2026-07-29 来自 广东
2#include <bits/stdc++.h>
using namespace std;
using ll = long long;
string s;
ll ans;
bool vis[20];
void dfs(ll idx,string str){ // idx是递归层数
if(idx == 8+1){
ans++;
if(str == s){
cout<<ans;
exit(0);
}
}
for(ll i = 0; i <= 9 ; i++){
if(!vis[i]){
char ch = i+'0';
vis[i] = 1;
dfs(idx****tr+ch);
vis[i] = 0;
}
}
}
int main() {
cin>>s;
dfs(1,"");
return 0;
}2026-07-29 来自 广东
2!?强强?!
2026-07-30 来自 广东
111111
2026-07-30 来自 广东
1
#include <bits/stdc++.h> using namespace std; int main(){ for(int i=1;i<=500;i++){ cout << "徐老师&周老师真帅" << endl; } }AC
#include <bits/stdc++.h> using namespace std; int main(){ while(1){ cout << "徐老师&周老师真帅" << endl; } }OLE
2026-07-29 来自 广东
1a
2026-07-29 来自 广东
1ja
2026-07-29 来自 广东
1


2026-07-29 来自 广东
1```cpp ```cpp ```cpp ```cpp [链接描述](url)2026-07-29 来自 广东
1****内容为dfs(idx+/1/,s/t/r+ch)
“//”类符号删除即可2026-07-29 来自 广东
1//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//for(int i=1;i<=100;i++){
// cout<<"徐老师and周老师真帅"<<endl;
// }
//}2026-07-29 来自 广东
1ACGO_不愧是你
2026-07-29 来自 广东
0
2026-07-29 来自 广东
0












































有帮助,赞一个