C++各类函数评点+详解

1. C++源代码1.0 新手必看

#include <bits/stdc++.h>//#include <iostream>
using namespace std;

int main()
{
	
	
	return 0;
}

#include <bits/stdc++.h>

//#include <iostream>
using namespace std;

int main()
{
        
    return 0;
}
 

#include

 1 #include <bits/stdc++.h>

这个头文件可以在99%评测系统和Dev-C++编译环境使用 (VScode VS不适用)

2 #include <iostream>

这个头文件可以在100%评测系统和Dev-C++编译环境使用 (VScode VS适用)

但是------------------------

       只能控制cin和cout,几乎不能控制任何函数,比较麻烦

using namespace std;

如果不加,几乎所有语句需要加上:

std::

例如:

std::cout<<"hello!"<<endl;//或者'\n'

std::cout<<"hello!"<<endl;//或者'\n'

2.判素数

bool pss(int n)
{
	if(n<2) return false;
	for(int i=2; i<=sqrt(n); i++)
	{
		if(n%i==0) return false; 
	}
	return true;
}

bool pss(int n)
{
    if(n<2) return false;
    for(int i=2; i<=sqrt(n); i++)
    {
        if(n%i==0) return false; 
    }
    return true;
}‘

当是素数时返回1,否则返回0。

for()循环中,sqrt(n)的时间复杂度比 i*i<=n 要小很多,建议使用。

完整代码:

#include <bits/stdc++.h>
using namespace std;
long long n;
bool pss(int n)
{
	if(n<2) return false;
	for(int i=2; i<=sqrt(n); i++)
	{
		if(n%i==0) return false; 
	}
	return true;
}
int main()
{
	
	cin>>n;
	cout<<pss(n)<<'\n';
	system("pause");
	for(int i=1; i<=n; i++)
	{
		cout<<setw(10)<<i<<": "<<pss(i)<<'\n';
	}
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
long long n;
bool pss(int n)
{
    if(n<2) return false;
    for(int i=2; i<=sqrt(n); i++)
    {
        if(n%i==0) return false; 
    }
    return true;
}
int main()
{
    
    cin>>n;
    cout<<pss(n)<<'\n';
    system("pause");
    for(int i=1; i<=n; i++)
    {
        cout<<setw(10)<<i<<": "<<pss(i)<<'\n';
    }
    return 0;

3.约数和

long long ysh(long long n)
{
	long long s=0;
	for(int i=1; i<=sqrt(n); i++)
	{
		if(n%i==0) s=s+i+n/i;
		if(i*i==n) s=s-i; 
	}
	return s;
}

long long ysh(long long n)
{
    long long s=0;
    for(int i=1; i<=sqrt(n); i++)
    {
        if(n%i==0) s=s+i+n/i;
        if(i*i==n) s=s-i; 
    }
    return s;
}

完整输出1~n每一个数约数和的代码:

#include <bits/stdc++.h>
using namespace std;
long long n;
long long ysh(long long n)
{
	long long s=0;
	for(int i=1; i<=sqrt(n); i++)
	{
		if(n%i==0) s=s+i+n/i;
		if(i*i==n) s=s-i; 
	}
	return s;
}
int main()
{
	
	cin>>n;
	cout<<ysh(n)<<'\n';
	system("pause");
	for(int i=1; i<=n; i++)
	{
		cout<<setw(10)<<i<<": "<<setw(15)<<ysh(i)<<'\n';
	}
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
long long n;
long long ysh(long long n)
{
    long long s=0;
    for(int i=1; i<=sqrt(n); i++)
    {
        if(n%i==0) s=s+i+n/i;
        if(i*i==n) s=s-i; 
    }
    return s;
}
int main()
{
    
    cin>>n;
    cout<<ysh(n)<<'\n';
    system("pause");
    for(int i=1; i<=n; i++)
    {
        cout<<setw(10)<<i<<": "<<setw(15)<<ysh(i)<<'\n';
    }
    return 0;
}
 

难度增加-------------------------------

进入算法

1 数字地图遍历

#include <bits/stdc++.h>
using namespace std;
int n,m,gx,gy;
int a[25][25];//请注意范围
int ans;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
	a[x][y]=-1;
	ans++;//直接累加求和 
	for(int i=0; i<4; i++)
	{
		int lx=x+dx[i];
		int ly=y+dy[i];
		if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
		if(a[lx][ly]==0) dg(dep+1,lx,ly);
	}
}
void dr()
{
	memset(a,-1,sizeof(a));
	cin>>n>>m;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			int t;
			cin>>t;
			if(t==0) a[i][j]=0;
			if(t==1) a[i][j]=-1;
			if(t==2)
			{
				a[i][j]=0;
				gx=i;
				gy=j;
			}
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	dr();//用来套模板
	dg(1,gx,gy);
	cout<<ans;
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int n,m,gx,gy;
int a[25][25];//请注意范围
int ans;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
    a[x][y]=-1;
    ans++;//累加求和 
    for(int i=0; i<4; i++)
    {
        int lx=x+dx[i];
        int ly=y+dy[i];
        if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
        if(a[lx][ly]==0) dg(dep+1,lx,ly);
    }
}
void dr()
{
    memset(a,-1,sizeof(a));
    cin>>n>>m;
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            int t;
            cin>>t;
            if(t==0) a[i][j]=0;
            if(t==1) a[i][j]=-1;
            if(t==2)
            {
                a[i][j]=0;
                gx=i;
                gy=j;
            }
        }
    }
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    dr();//用来套模板
    dg(1,gx,gy);
    cout<<ans;
    return 0;
}

字符版:

#include <bits/stdc++.h>
using namespace std;
int n,m,gx,gy;
int a[25][25];//请注意范围
int ans;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
	a[x][y]=-1;
	ans++;//累加求和 
	for(int i=0; i<4; i++)
	{
		int lx=x+dx[i];
		int ly=y+dy[i];
		if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
		if(a[lx][ly]==0) dg(dep+1,lx,ly);
	}
}
void dr()
{
	memset(a,-1,sizeof(a));
	cin>>n>>m;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			char t;
			cin>>t;
			if(t=='.') a[i][j]=0;
			if(t=='#') a[i][j]=-1;
			if(t=='@')
			{
				a[i][j]=0;
				gx=i;
				gy=j;
			}
		}
	}
}
int main()
{
	dr();//用来套模板
	dg(1,gx,gy);
	cout<<ans;
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int n,m,gx,gy;
int a[25][25];//请注意范围
int ans;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
    a[x][y]=-1;
    ans++;//累加求和 
    for(int i=0; i<4; i++)
    {
        int lx=x+dx[i];
        int ly=y+dy[i];
        if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
        if(a[lx][ly]==0) dg(dep+1,lx,ly);
    }
}
void dr()
{
    memset(a,-1,sizeof(a));
    cin>>n>>m;
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            char t;
            cin>>t;
            if(t=='.') a[i][j]=0;
            if(t=='#') a[i][j]=-1;
            if(t=='@')
            {
                a[i][j]=0;
                gx=i;
                gy=j;
            }
        }
    }
}
int main()
{
    dr();//用来套模板
    dg(1,gx,gy);
    cout<<ans;
    return 0;
}

递归求解问题

池塘遍历,有几个连通块

#include <bits/stdc++.h>
using namespace std;
int n,m,gx=1,gy=1;
int a[105][105];//请注意范围
int ans;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
	a[x][y]=-1;
	for(int i=0; i<4; i++)
	{
		int lx=x+dx[i];
		int ly=y+dy[i];
		if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
		if(a[lx][ly]==0) dg(dep+1,lx,ly);
	}
}//用来搜索并蔓延该池塘每个角落的-1 
void dr()
{
	memset(a,-1,sizeof(a));
	cin>>n>>m;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			char t;
			cin>>t;
			if(t=='W') a[i][j]=0;
			if(t=='.') a[i][j]=-1;
		}
	}
}
int main()
{
	dr();//用来套模板
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			if(a[i][j]==0)
			{
				/*
				1 为什么不会重复
				    因为dg()函数已经将前面的池塘扫描并赋为-1
				2 为什么可以使用“0 ”,题目中为字符
				    因为dr()函数已经将 "."和"W"变为了-1和 0
				*/
				ans++;
				dg(1,i,j);
			}
		}
	}
	cout<<ans;
	return 0;
}
/*
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

20 20
WWW.......WWW..WWWW.
.WWW...WWWWW...WWWWW
.WWWWW..WWWWWW.WWWWW
WWWWW..WWW......WWW.
WWWWWW.WW.......WW..
WWWWW...W......WW...
WWWWW.....W....W..WW
W........WWWWW...WWW
.......WWWWWWWWW.WW.
.W.W.W.WWW...W...W..
.WWWW.WWW.....WWWWWW
...............WW... 
.WW.............W..W
.W..........WW....WW
.WWWWWWWW.WWW....WWW
.....WWWW.WWWW.....W
.WWWWWWW.....WWW...W
..W.......W...W.....
..WWW....WWWW.....WW
W..W..WW...W..W.W..W

ans:16
*/ 

#include <bits/stdc++.h>
using namespace std;
int n,m,gx=1,gy=1;
int a[105][105];//请注意范围
int ans;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
    a[x][y]=-1;
    for(int i=0; i<4; i++)
    {
        int lx=x+dx[i];
        int ly=y+dy[i];
        if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
        if(a[lx][ly]==0) dg(dep+1,lx,ly);
    }
}//用来搜索并蔓延该池塘每个角落的-1 
void dr()
{
    memset(a,-1,sizeof(a));
    cin>>n>>m;
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            char t;
            cin>>t;
            if(t=='W') a[i][j]=0;
            if(t=='.') a[i][j]=-1;
        }
    }
}
int main()
{
    dr();//用来套模板
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            if(a[i][j]==0)
            {
                /*
                1 为什么不会重复
                    因为dg()函数已经将前面的池塘扫描并赋为-1
                2 为什么可以使用“0 ”,题目中为字符
                    因为dr()函数已经将 "."和"W"变为了-1和 0
                */
                ans++;
                dg(1,i,j);
            }
        }
    }
    cout<<ans;
    return 0;
}
/*
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

20 20
WWW.......WWW..WWWW.
.WWW...WWWWW...WWWWW
.WWWWW..WWWWWW.WWWWW
WWWWW..WWW......WWW.
WWWWWW.WW.......WW..
WWWWW...W......WW...
WWWWW.....W....W..WW
W........WWWWW...WWW
.......WWWWWWWWW.WW.
.W.W.W.WWW...W...W..
.WWWW.WWW.....WWWWWW
...............WW... 
.WW.............W..W
.W..........WW....WW
.WWWWWWWW.WWW....WWW
.....WWWW.WWWW.....W
.WWWWWWW.....WWW...W
..W.......W...W.....
..WWW....WWWW.....WW
W..W..WW...W..W.W..W

ans:16
*/ 

8方向

#include <bits/stdc++.h>
using namespace std;
int n,m,gx=1,gy=1;
int a[105][105];//请注意范围
int ans;
int dx[10]= {0,0,1,-1,1,-1,1,-1};
int dy[10]= {1,-1,0,0,-1,1,1,-1};
void dg(int dep,int x,int y)
{
	a[x][y]=-1;
	for(int i=0; i<8; i++)//8方向 
	{
		int lx=x+dx[i];
		int ly=y+dy[i];
		if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
		if(a[lx][ly]==0) dg(dep+1,lx,ly);
	}
}//用来搜索并蔓延该池塘每个角落的-1 
void dr()
{
	memset(a,-1,sizeof(a));
	cin>>n>>m;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			char t;
			cin>>t;
			if(t=='W') a[i][j]=0;
			if(t=='.') a[i][j]=-1;
		}
	}
}
int main()
{
	dr();//用来套模板
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			if(a[i][j]==0)
			{
				/*
				1 为什么不会重复
				    因为dg()函数已经将前面的池塘扫描并赋为-1
				2 为什么可以使用“0 ”,题目中为字符
				    因为dr()函数已经将 "."和"W"变为了-1和 0
				*/
				ans++;
				dg(1,i,j);
			}
		}
	}
	cout<<ans;
	return 0;
}
/*
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

20 20
WWW.......WWW..WWWW.
.WWW...WWWWW...WWWWW
.WWWWW..WWWWWW.WWWWW
WWWWW..WWW......WWW.
WWWWWW.WW.......WW..
WWWWW...W......WW...
WWWWW.....W....W..WW
W........WWWWW...WWW
.......WWWWWWWWW.WW.
.W.W.W.WWW...W...W..
.WWWW.WWW.....WWWWWW
...............WW... 
.WW.............W..W
.W..........WW....WW
.WWWWWWWW.WWW....WWW
.....WWWW.WWWW.....W
.WWWWWWW.....WWW...W
..W.......W...W.....
..WWW....WWWW.....WW
W..W..WW...W..W.W..W

ans:13
*/ 

#include <bits/stdc++.h>
using namespace std;
int n,m,gx=1,gy=1;
int a[105][105];//请注意范围
int ans;
int dx[10]= {0,0,1,-1,1,-1,1,-1};
int dy[10]= {1,-1,0,0,-1,1,1,-1};
void dg(int dep,int x,int y)
{
    a[x][y]=-1;
    for(int i=0; i<8; i++)//8方向 
    {
        int lx=x+dx[i];
        int ly=y+dy[i];
        if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
        if(a[lx][ly]==0) dg(dep+1,lx,ly);
    }
}//用来搜索并蔓延该池塘每个角落的-1 
void dr()
{
    memset(a,-1,sizeof(a));
    cin>>n>>m;
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            char t;
            cin>>t;
            if(t=='W') a[i][j]=0;
            if(t=='.') a[i][j]=-1;
        }
    }
}
int main()
{
    dr();//用来套模板
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            if(a[i][j]==0)
            {
                /*
                1 为什么不会重复
                    因为dg()函数已经将前面的池塘扫描并赋为-1
                2 为什么可以使用“0 ”,题目中为字符
                    因为dr()函数已经将 "."和"W"变为了-1和 0
                */
                ans++;
                dg(1,i,j);
            }
        }
    }
    cout<<ans;
    return 0;
}
/*
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

20 20
WWW.......WWW..WWWW.
.WWW...WWWWW...WWWWW
.WWWWW..WWWWWW.WWWWW
WWWWW..WWW......WWW.
WWWWWW.WW.......WW..
WWWWW...W......WW...
WWWWW.....W....W..WW
W........WWWWW...WWW
.......WWWWWWWWW.WW.
.W.W.W.WWW...W...W..
.WWWW.WWW.....WWWWWW
...............WW... 
.WW.............W..W
.W..........WW....WW
.WWWWWWWW.WWW....WWW
.....WWWW.WWWW.....W
.WWWWWWW.....WWW...W
..W.......W...W.....
..WWW....WWWW.....WW
W..W..WW...W..W.W..W

ans:13
*/ 

迷宫问题
正常版
#include <bits/stdc++.h>
using namespace std;
int n,gx=1,gy=1;
int a[105][105];//请注意范围
int xa,ya,xb,yb;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
	a[x][y]=-1;
	if(x==xb&&y==yb)
	{
		cout<<"YES";
		exit(0); 
	}
	for(int i=0; i<4; i++)
	{
		int lx=x+dx[i];
		int ly=y+dy[i];
		if(lx<1||lx>n||ly<1||ly>n||a[lx][ly]==-1) continue;
		if(a[lx][ly]==0) dg(dep+1,lx,ly);
	}
}
void dr()
{
	memset(a,-1,sizeof(a));
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=n; j++)
		{
			int t;
			cin>>t;
			if(t==0) a[i][j]=0;
			if(t==1) a[i][j]=-1;
		}
	}
	cin>>xa>>ya>>xb>>yb;
}
int main()
{
	dr();//用来套模板
	if(a[xa][ya]==-1||a[xb][yb]==-1)
	{
		cout<<"NO";
		return 0;
	}
	dg(1,xa,ya);
	cout<<"NO";//如果没有在递归中终止,说明无法到达,输出“NO ” 
	return 0;
}
/*

*/ 

#include <bits/stdc++.h>
using namespace std;
int n,gx=1,gy=1;
int a[105][105];//请注意范围
int xa,ya,xb,yb;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
    a[x][y]=-1;
    if(x==xb&&y==yb)
    {
        cout<<"YES";
        exit(0); 
    }
    for(int i=0; i<4; i++)
    {
        int lx=x+dx[i];
        int ly=y+dy[i];
        if(lx<1||lx>n||ly<1||ly>n||a[lx][ly]==-1) continue;
        if(a[lx][ly]==0) dg(dep+1,lx,ly);
    }
}
void dr()
{
    memset(a,-1,sizeof(a));
    cin>>n;
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
        {
            int t;
            cin>>t;
            if(t==0) a[i][j]=0;
            if(t==1) a[i][j]=-1;
        }
    }
    cin>>xa>>ya>>xb>>yb;
}
int main()
{
    dr();//用来套模板
    if(a[xa][ya]==-1||a[xb][yb]==-1)
    {
        cout<<"NO";
        return 0;
    }
    dg(1,xa,ya);
    cout<<"NO";//如果没有在递归中终止,说明无法到达,输出“NO ” 
    return 0;
}
/*

*/ 

字符版
#include <bits/stdc++.h>
using namespace std;
int n,gx=1,gy=1;
int a[105][105];//请注意范围
int xa,ya,xb,yb;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
	a[x][y]=-1;
	if(x==xb&&y==yb)
	{
		cout<<"YES";
		exit(0); 
	}
	for(int i=0; i<4; i++)
	{
		int lx=x+dx[i];
		int ly=y+dy[i];
		if(lx<1||lx>n||ly<1||ly>n||a[lx][ly]==-1) continue;
		if(a[lx][ly]==0) dg(dep+1,lx,ly);
	}
}
void dr()
{
	memset(a,-1,sizeof(a));
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=n; j++)
		{
			char t;
			cin>>t;
			if(t=='.') a[i][j]=0;
			if(t=='#') a[i][j]=-1;
		}
	}
	cin>>xa>>ya>>xb>>yb;
}
int main()
{
	dr();//用来套模板
	if(a[xa][ya]==-1||a[xb][yb]==-1)
	{
		cout<<"NO";
		return 0;
	}
	dg(1,xa,ya);
	cout<<"NO";//如果没有在递归中终止,说明无法到达,输出“NO ” 
	return 0;
}
/*

*/ 

#include <bits/stdc++.h>
using namespace std;
int n,gx=1,gy=1;
int a[105][105];//请注意范围
int xa,ya,xb,yb;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
void dg(int dep,int x,int y)
{
    a[x][y]=-1;
    if(x==xb&&y==yb)
    {
        cout<<"YES";
        exit(0); 
    }
    for(int i=0; i<4; i++)
    {
        int lx=x+dx[i];
        int ly=y+dy[i];
        if(lx<1||lx>n||ly<1||ly>n||a[lx][ly]==-1) continue;
        if(a[lx][ly]==0) dg(dep+1,lx,ly);
    }
}
void dr()
{
    memset(a,-1,sizeof(a));
    cin>>n;
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
        {
            char t;
            cin>>t;
            if(t=='.') a[i][j]=0;
            if(t=='#') a[i][j]=-1;
        }
    }
    cin>>xa>>ya>>xb>>yb;
}
int main()
{
    dr();//用来套模板
    if(a[xa][ya]==-1||a[xb][yb]==-1)
    {
        cout<<"NO";
        return 0;
    }
    dg(1,xa,ya);
    cout<<"NO";//如果没有在递归中终止,说明无法到达,输出“NO ” 
    return 0;
}
/*

*/ 

走法
#include <bits/stdc++.h>
using namespace std;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
int ans=INT_MAX,n,m;
int a[105][105];
int d[105][105];
int xa,ya,xb,yb;
void dg(int dep,int x,int y)
{
	if(dep<d[x][y])
	{
		d[x][y]=dep;
		for(int i=0; i<4; i++)
		{
			int lx=x+dx[i];
			int ly=y+dy[i];
			if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1||dep+1>=ans) continue;
			if(a[lx][ly]==0) dg(dep+1,lx,ly);
		}
	}
}
void dr()
{
	cin>>n>>m;
	memset(a,-1,sizeof(a));
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			char t;
			cin>>t;
			if(t!='#') a[i][j]=0;
			if(t=='@')
			{
				xa=i;
				ya=j;
			}
			if(t=='*')
			{
				xb=i;
				yb=j;
			}
		}
	}
}
int main()
{
	dr();
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++) d[i][j]=INT_MAX;
	}
	dg(0,xa,ya);
	if(d[xb][yb]==INT_MAX) cout<<-1;
	else cout<<d[xb][yb];
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int dx[5]= {0,0,1,-1};
int dy[5]= {1,-1,0,0};
int ans=INT_MAX,n,m;
int a[105][105];
int d[105][105];
int xa,ya,xb,yb;
void dg(int dep,int x,int y)
{
    if(dep<d[x][y])
    {
        d[x][y]=dep;
        for(int i=0; i<4; i++)
        {
            int lx=x+dx[i];
            int ly=y+dy[i];
            if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1||dep+1>=ans) continue;
            if(a[lx][ly]==0) dg(dep+1,lx,ly);
        }
    }
}
void dr()
{
    cin>>n>>m;
    memset(a,-1,sizeof(a));
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            char t;
            cin>>t;
            if(t!='#') a[i][j]=0;
            if(t=='@')
            {
                xa=i;
                ya=j;
            }
            if(t=='*')
            {
                xb=i;
                yb=j;
            }
        }
    }
}
int main()
{
    dr();
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++) d[i][j]=INT_MAX;
    }
    dg(0,xa,ya);
    if(d[xb][yb]==INT_MAX) cout<<-1;
    else cout<<d[xb][yb];
    return 0;
}

跳马问题

正常版
#include <bits/stdc++.h>
using namespace std;
int dx[10]={1,2,2,1,-1,-2,-2,-1};
int dy[10]={-2,-1,1,2,2,1,-1,-2};
int n,m,x,y,s,t,ans=INT_MAX;
int a[10][10];
int d[10][10];
void dg(int dep,int x,int y)
{
	if(x==s&&y==t)
	{
		if(dep<ans) ans=dep;
		return ;
	}
	a[x][y]=-1;
	for(int i=0; i<=7; i++)
	{
		int lx=x+dx[i];
		int ly=y+dy[i];
		if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
		if(a[lx][ly]==0) dg(dep+1,lx,ly);
	}
	a[x][y]=0;	
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>m>>x>>y>>s>>t;
	dg(0,x,y);
	cout<<ans;
	return 0;
}
障碍版
#include <bits/stdc++.h>
using namespace std;
int dx[10]={1,2,2,1,-1,-2,-2,-1};
int dy[10]={-2,-1,1,2,2,1,-1,-2};
int n,m,x,y,s,t,ans=INT_MAX;
int a[10][10];
int d[10][10];
void dg(int dep,int x,int y)
{
	if(x==s&&y==t)
	{
		if(dep<ans) ans=dep;
		return ;
	}
	a[x][y]=-1;
	for(int i=0; i<=7; i++)
	{
		int lx=x+dx[i];
		int ly=y+dy[i];
		if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
		if(a[lx][ly]==0) dg(dep+1,lx,ly);
	}
	a[x][y]=0;	
}
void dr()
{
	memset(a,-1,sizeof(a));
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			int t;
			cin>>t;
			if(t==0) a[i][j]=0;
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>m>>x>>y>>s>>t;
	dr();
	dg(0,x,y);
	cout<<ans;
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int dx[10]={1,2,2,1,-1,-2,-2,-1};
int dy[10]={-2,-1,1,2,2,1,-1,-2};
int n,m,x,y,s,t,ans=INT_MAX;
int a[10][10];
int d[10][10];
void dg(int dep,int x,int y)
{
    if(x==s&&y==t)
    {
        if(dep<ans) ans=dep;
        return ;
    }
    a[x][y]=-1;
    for(int i=0; i<=7; i++)
    {
        int lx=x+dx[i];
        int ly=y+dy[i];
        if(lx<1||lx>n||ly<1||ly>m||a[lx][ly]==-1) continue;
        if(a[lx][ly]==0) dg(dep+1,lx,ly);
    }
    a[x][y]=0;    
}
void dr()
{
    memset(a,-1,sizeof(a));
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            int t;
            cin>>t;
            if(t==0) a[i][j]=0;
        }
    }
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m>>x>>y>>s>>t;
    dr();
    dg(0,x,y);
    cout<<ans;
    return 0;
}

字符+障碍
#include <bits/stdc++.h>
using namespace std;
int dx[10]= {1,2,2,1,-1,-2,-2,-1};
int dy[10]= {-2,-1,1,2,2,1,-1,-2};
int n,m,gx,gy,ex,ey;
int a[105][105];
int d[105][105];
void dg(int dep,int x,int y)
{
	if(dep<d[x][y])
	{
		d[x][y]=dep;
		for(int i=0; i<=7; i++)
		{
			int lx=x+dx[i];
			int ly=y+dy[i];
			if(lx<1||lx>n||ly<1||ly>m||a[x][y]==-1) continue;
			dg(dep+1,lx,ly);
		}
	}
}
void dr()
{
	cin>>m>>n;
	memset(a,-1,sizeof(a));
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=m; j++)
		{
			char t;
			cin>>t;
			d[i][j]=INT_MAX;
			if(t!='*') a[i][j]=0;
			if(t=='K')
			{
				gx=i;
				gy=j;
			}
			if(t=='H')
			{
				ex=i;
				ey=j;
			} 
		}
	}
}
int main()
{
	dr();
	dg(0,gx,gy);
	cout<<d[ex][ey];
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int dx[10]= {1,2,2,1,-1,-2,-2,-1};
int dy[10]= {-2,-1,1,2,2,1,-1,-2};
int n,m,gx,gy,ex,ey;
int a[105][105];
int d[105][105];
void dg(int dep,int x,int y)
{
    if(dep<d[x][y])
    {
        d[x][y]=dep;
        for(int i=0; i<=7; i++)
        {
            int lx=x+dx[i];
            int ly=y+dy[i];
            if(lx<1||lx>n||ly<1||ly>m||a[x][y]==-1) continue;
            dg(dep+1,lx,ly);
        }
    }
}
void dr()
{
    cin>>m>>n;
    memset(a,-1,sizeof(a));
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            char t;
            cin>>t;
            d[i][j]=INT_MAX;
            if(t!='*') a[i][j]=0;
            if(t=='K')
            {
                gx=i;
                gy=j;
            }
            if(t=='H')
            {
                ex=i;
                ey=j;
            } 
        }
    }
}
int main()
{
    dr();
    dg(0,gx,gy);
    cout<<d[ex][ey];
    return 0;
}


汉诺塔
#include <bits/stdc++.h>
using namespace std;
int n;
void dg(int n,char a,char b,char c)
{
	if(n==1)
	{
		cout<<a<<" To "<<c<<'\n';
		return ;
	}
	dg(n-1,a,c,b);
	cout<<a<<" To "<<c<<'\n';
	dg(n-1,b,a,c);
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	dg(n,'A','B','C');
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int n;
void dg(int n,char a,char b,char c)
{
    if(n==1)
    {
        cout<<a<<" To "<<c<<'\n';
        return ;
    }
    dg(n-1,a,c,b);
    cout<<a<<" To "<<c<<'\n';
    dg(n-1,b,a,c);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n;
    dg(n,'A','B','C');
    return 0;
}

01背包
#include <bits/stdc++.h>
using namespace std;
// 01背包(1.0.0版本) 难度: Lv.1
/*
实现版块
1 求出各种数值 
*/
int ans,n;
/*
ans:价钱不同时的数量
n:物品的数量
*/ 
int a[500];//存储每一个物品的价格 
int b[50000];//答案数量数组 
void dg(int dep,int money)
{
	if(dep>=n)//当已经完全遍历完每一个物品时
	{
		int f=1;//旗帜 
		for(int i=1; i<=ans; i++)
		{
			if(money==b[i])//得出的价钱与以前拥有的值重复
			{
				f=0;//遍历失败
				break;//退出循环
			}
		}
		if(f==1)
		{
			ans++;//当遍历成功,不同的价钱数量增加 
			b[ans]=money;//存入这个价钱
		}
		return ;//因为类型是无返回值类型,所以手动结束程序
	}
	dg(dep+1,money+a[dep]);//分类讨论
	dg(dep+1,money);//分类讨论
}
int main()
{
	cin>>n;//输入 n
	for(int i=1; i<=n; i++) cin>>a[i];//输入 n 个物品的价格
	dg(1,0);//使用 01 背包递归以解决所有的值
	cout<<ans;//输出: 通过选择各个物品分类讨论买与不买的情况,最后得出不同的值的数量
	return 0;
}
/*
样例1(建议复制换行)
5
1 2 3 3 3

结果:10

-------------------------------
样例2(建议复制换行)
10
2 2 2 2 2 2 2 2 2 2

01背包问题总解决方案
01背包的代码长度优化
01背包时间复杂度改进
*/

 

#include <bits/stdc++.h>
using namespace std;
// 01背包(1.0.0版本) 难度: Lv.1
/*
实现版块
1 求出各种数值 
*/
int ans,n;
/*
ans:价钱不同时的数量
n:物品的数量
*/ 
int a[500];//存储每一个物品的价格 
int b[50000];//答案数量数组 
void dg(int dep,int money)
{
    if(dep>=n)//当已经完全遍历完每一个物品时
    {
        int f=1;//旗帜 
        for(int i=1; i<=ans; i++)
        {
            if(money==b[i])//得出的价钱与以前拥有的值重复
            {
                f=0;//遍历失败
                break;//退出循环
            }
        }
        if(f==1)
        {
            ans++;//当遍历成功,不同的价钱数量增加 
            b[ans]=money;//存入这个价钱
        }
        return ;//因为类型是无返回值类型,所以手动结束程序
    }
    dg(dep+1,money+a[dep]);//分类讨论
    dg(dep+1,money);//分类讨论
}
int main()
{
    cin>>n;//输入 n
    for(int i=1; i<=n; i++) cin>>a[i];//输入 n 个物品的价格
    dg(1,0);//使用 01 背包递归以解决所有的值
    cout<<ans;//输出: 通过选择各个物品分类讨论买与不买的情况,最后得出不同的值的数量
    return 0;
}
/*
样例1(建议复制换行)
5
1 2 3 3 3

结果:10

-------------------------------
样例2(建议复制换行)
10
2 2 2 2 2 2 2 2 2 2

01背包问题总解决方案
01背包的代码长度优化
01背包时间复杂度改进
*/

01背包2.0
#include <bits/stdc++.h>
using namespace std;
// 01背包(1.1.0版本) 难度: Lv.2
/*
实现版块
1 求出最优方案
*/
int ans,n,m;
/*
ans:价钱不同时的数量
n:物品的数量
m:可以装载货物的重量
*/
int a[500];//存储每一个物品的价格
int b[500];//存储每一个物品的体积
void dg(int dep,int v,int money)
{
	if(v>m) return ;
	if(dep>=n)//当已经完全遍历完每一个物品时
	{ 
		if(v<=m&&money>ans) ans=money;
		return ;//因为类型是无返回值类型,所以手动结束程序
	}
	dg(dep+1,v+b[dep],money+a[dep]);//分类讨论
	dg(dep+1,v,money);//分类讨论
}
int main()
{
	cin>>n>>m;//输入 n,m
	for(int i=1; i<=n; i++) cout<<i<<":",cin>>a[i]>>b[i];//输入 n 个物品的价格
	cout<<"---------------------"<<'\n';
	dg(1,0,0);//使用 01 背包递归以解决所有的值
	cout<<"ans:"<<ans<<'\n';//输出: 通过选择各个物品分类讨论买与不买的情况,最后得出不同的值的数量
	return 0;
}
/*

01背包问题总解决方案
01背包的代码长度优化
01背包时间复杂度改进
*/

#include <bits/stdc++.h>
using namespace std;
// 01背包(1.1.0版本) 难度: Lv.2
/*
实现版块
1 求出最优方案
*/
int ans,n,m;
/*
ans:价钱不同时的数量
n:物品的数量
m:可以装载货物的重量
*/
int a[500];//存储每一个物品的价格
int b[500];//存储每一个物品的体积
void dg(int dep,int v,int money)
{
    if(v>m) return ;
    if(dep>=n)//当已经完全遍历完每一个物品时
    { 
        if(v<=m&&money>ans) ans=money;
        return ;//因为类型是无返回值类型,所以手动结束程序
    }
    dg(dep+1,v+b[dep],money+a[dep]);//分类讨论
    dg(dep+1,v,money);//分类讨论
}
int main()
{
    cin>>n>>m;//输入 n,m
    for(int i=1; i<=n; i++) cout<<i<<":",cin>>a[i]>>b[i];//输入 n 个物品的价格
    cout<<"---------------------"<<'\n';
    dg(1,0,0);//使用 01 背包递归以解决所有的值
    cout<<"ans:"<<ans<<'\n';//输出: 通过选择各个物品分类讨论买与不买的情况,最后得出不同的值的数量
    return 0;
}
/*

01背包问题总解决方案
01背包的代码长度优化
01背包时间复杂度改进
*/

 

完全背包
#include <bits/stdc++.h>
using namespace std;
// 完全背包(1.1.0版本) 难度: Lv.2
/*
实现版块
1 求出最优方案
*/
int ans,n,m;
/*
ans:价钱不同时的数量
n:物品的数量
m:可以装载货物的重量
*/
int a[500];//存储每一个物品的价格
int b[500];//存储每一个物品的体积
void dg(int dep,int v,int money)
{
	if(v>m) return ;
	if(dep>=n)//当已经完全遍历完每一个物品时
	{ 
		if(v<=m&&money>ans) ans=money;
		return ;//因为类型是无返回值类型,所以手动结束程序
	}
	dg(dep+1,v+b[dep],money+a[dep]);//分类讨论
	dg(dep+1,v,money);//分类讨论
}
int main()
{
	cin>>n>>m;//输入 n,m
	for(int i=1; i<=n; i++) cout<<i<<":",cin>>a[i]>>b[i];//输入 n 个物品的价格
	cout<<"---------------------"<<'\n';
	dg(1,0,0);//使用 01 背包递归以解决所有的值
	cout<<"ans:"<<ans<<'\n';//输出: 通过选择各个物品分类讨论买与不买的情况,最后得出不同的值的数量
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
// 完全背包(1.1.0版本) 难度: Lv.2
/*
实现版块
1 求出最优方案
*/
int ans,n,m;
/*
ans:价钱不同时的数量
n:物品的数量
m:可以装载货物的重量
*/
int a[500];//存储每一个物品的价格
int b[500];//存储每一个物品的体积
void dg(int dep,int v,int money)
{
    if(v>m) return ;
    if(dep>=n)//当已经完全遍历完每一个物品时
    { 
        if(v<=m&&money>ans) ans=money;
        return ;//因为类型是无返回值类型,所以手动结束程序
    }
    dg(dep+1,v+b[dep],money+a[dep]);//分类讨论
    dg(dep+1,v,money);//分类讨论
}
int main()
{
    cin>>n>>m;//输入 n,m
    for(int i=1; i<=n; i++) cout<<i<<":",cin>>a[i]>>b[i];//输入 n 个物品的价格
    cout<<"---------------------"<<'\n';
    dg(1,0,0);//使用 01 背包递归以解决所有的值
    cout<<"ans:"<<ans<<'\n';//输出: 通过选择各个物品分类讨论买与不买的情况,最后得出不同的值的数量
    return 0;

dp

1 走台阶

#include <bits/stdc++.h>
using namespace std;
int dp[100]={1,1}; 
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	int n;
	cin>>n;
	for(int i=2; i<=n; i++) dp[i]=dp[i-1]+dp[i-2];
	cout<<dp[n]; 
	return 0;
}

 #include <bits/stdc++.h>
using namespace std;
int dp[100]={1,1}; 
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int n;
    cin>>n;
    for(int i=2; i<=n; i++) dp[i]=dp[i-1]+dp[i-2];
    cout<<dp[n]; 
    return 0;
}

01背包dp通用模板

#include <bits/stdc++.h>
using namespace std;
int t,m,a[20005],b[20005];
int dp[20005];
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>t>>m;
	for(int i=1; i<=m; i++)
	{
		cin>>a[i];
		for(int j=t; j>=a[i]; j--)
		{
			dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
		}
	}
	cout<<t-dp[t];
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int t,m,a[20005],b[20005];
int dp[20005];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>t>>m;
    for(int i=1; i<=m; i++)
    {
        cin>>a[i];
        for(int j=t; j>=a[i]; j--)
        {
            dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
        }
    }
    cout<<t-dp[t];
    return 0;
}
重要代码:

for(int i=1; i<=m; i++)
	{
		cin>>a[i];
		for(int j=t; j>=a[i]; j--)
		{
			dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
		}
	}

for(int i=1; i<=m; i++)
    {
        cin>>a[i];
        for(int j=t; j>=a[i]; j--)
        {
            dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916818.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

本地 / 网络多绑定用例总结

原文连接&#xff1a;AUTOSAR_EXP_ARAComAPI的7章笔记&#xff08;4&#xff09; 情景设定 在前一节的基础上&#xff0c;假设有类似情景&#xff0c;区别在于服务实例 2 位于与 AP 产品相同以太网的不同 ECU 上&#xff0c;服务消费者及其代理驻留在 AP 产品 ECU 上。因以太网…

通用定时器---输出比较功能

目录 一、概念 二、输出比较的8种模式 三、输出比较输出PWM波形的基本结构 配置步骤 四、示例代码 一、概念 OC&#xff08;OutPut Compare&#xff09;输出比较。输出比较可以通过比较CNT与CCR寄存器的关系&#xff0c;来对输出电平进行置1/置0/翻转的操作&#xff0c;可…

CSS盒子的定位> (下篇)#固定定位#笔记

一、固定定位 1.概念 固定定位其实是绝对定位的子类别&#xff0c;一个设置了position&#xff1a;fixed的元素是相对于视窗固定的&#xff0c;就算页面文档发生了滚动&#xff0c;它也会一直待在相同的地方。 2.代码属性 CSS代码添加 position&#xff1a;fixed 水平方…

leetcode100:相同的树

给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&#xff1a;true示例 2&…

我谈二值形态学基本运算——腐蚀、膨胀、开运算、闭运算

Gonzalez从集合角度定义膨胀和腐蚀&#xff0c;不易理解。 Through these definitions, you can interpret dilation and erosion as sliding neighborhood operations analogous to convolution (or spatial filtering). 禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向…

【数据结构 | C++】整型关键字的平方探测法散列

整型关键字的平方探测法散列 将给定的无重复正整数序列插入一个散列表&#xff0c;输出每个输入的数字在表中的位置。所用的散列函数是 H(key)key%TSize&#xff0c;其中 TSize 是散列表的表长。要求用平方探测法&#xff08;只增不减&#xff0c;即H(Key)i^2&#xff09;解决冲…

24.11.15 Vue3

let newJson new Proxy(myJson,{get(target,prop){console.log(在读取${prop}属性);return target[prop];},set(target,prop,val){console.log(在设置${prop}属性值为${val});if(prop"name"){document.getElementById("myTitle").innerHTML val;}if(prop…

413: Quick Sort

解法&#xff1a; #include <bits/stdc.h> using namespace std; const int N1e55; int a[N]; int n;int main(int argc, char** argv) {cin>>n;for (int i0;i<n;i) cin>>a[i];sort(a,an);for (int i0;i<n;i) cout<<a[i]<<" "…

麒麟kysec安全

一、kysec安全框架管理 开启kysec getstatus Copy security-switch --set default Copy 重启系统 reboot Copy 刷新页面&#xff0c;等待几分钟&#xff0c;即可完成文件的扫描。 查看kysec状态 getstatus Copy 切换到管理员身份&#xff08;密码&#xff1a;devuser…

在qml里如何使用C++ Qt数据模型QAbstractListModel

本篇博客用qml GridView来显示视频矩阵,然后加载本地的视频,需要用到C++ Qt的model, 代码环境Qt6.5.3 qml, 对应的视频讲解:https://edu.csdn.net/learn/40003/653975?spm=3001.4143 先看一下界面效果: 上图是用qml ScrollView和GridView做了一个可以滚动显示的视频矩阵列…

Java项目实战II基于微信小程序的实习记录(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在当今竞争激烈的就业市场中&#xff0…

【C++笔记】vector使用详解及模拟实现

前言 各位读者朋友们&#xff0c;大家好&#xff01;上期我们讲了string类的模拟实现&#xff0c;这期我们开启vector的讲解。 一.vector的介绍及使用 1.1 vector的介绍 vector的文档 使用STL的三个境界&#xff1a;能用、明理、能扩展&#xff0c;下面学习vector&#xff…

【环境配置】macOS配置jdk与maven

配置jdk与maven 配置jdk与切换java版本命令 maven安装与配置国内镜像源 用到的命令 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls ➜ jdk-1.8.jdk jdk-11.jdk# 查看路径 pwd ➜ /Library/Java/JavaVirtualMachines# 打开环境变量配置文件 vi &…

借助Excel实现Word表格快速排序

实例需求&#xff1a;Word中的表格如下图所示&#xff0c;为了强化记忆&#xff0c;希望能够将表格内容随机排序&#xff0c;表格第一列仍然按照顺序编号&#xff0c;即编号不跟随表格行内容调整。 乱序之后的效果如下图所示&#xff08;每次运行代码的结果都不一定相同&#x…

Essential Cell Biology--Fifth Edition--Chapter one (6)

1.1.4.4 Internal Membranes Create Intracellular Compartments with Different Functions [细胞膜形成具有不同功能的细胞内隔室] 细胞核、线粒体和叶绿体并不是真核细胞中唯一的膜包围细胞器。细胞质中含有大量的[ a profusion of]其他细胞器&#xff0c;这些细胞器被单层膜…

动态规划29:673. 最长递增子序列的个数

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;673.…

M-LAG 技术笔记

M-LAG 简介 M-LAG&#xff08;Multichassis link aggregation&#xff0c;跨设备链路聚合&#xff09;将两台物理设备在聚合层面虚拟成一台设备来实现跨设备链路聚合&#xff0c;从而提供设备级冗余保护和流量负载分担。 M-LAG 基础概念 如 图1-1 所示&#xff0c;Device A …

C语言-指针及变量的概念与使用

1、指针的概念 计算机中所有的数据都必须放在内存中&#xff0c;不同类型的数据占用的字节数不一样&#xff0c;例如 int 占用 4 个字节&#xff0c;char 占 用 1 个字节。为了正确地访问这些数据&#xff0c;必须为每个字节都编上号码&#xff0c;就像门牌号、身份证号一样&a…

tauri开发中,使用node将png图片转成苹果的icns图标格式,解决tauri icon生成的mac图标过大问题

在tauri开发中&#xff0c;我们使用tauri icon生成的图标在windows上是正常的&#xff0c;但是在mac上就显示过大&#xff0c;也可以看tauri的issue&#xff1a;[v2]When using the Tauri Icon to generate icons, it is always larger than other icons in Mac tauri-apps/ta…

【Docker】Mac安装Docker Desktop导致磁盘剩余空间较少问题如何解决?

目录 一、背景描述 二、解决办法 三、清理效果 四、理论参考 解决方法 1. 清理未使用的 Docker 镜像、容器和卷 2. 查看 Docker 使用的磁盘空间 3. 调整 Docker 的存储位置 4. 增加磁盘空间 5. 调整 Docker Desktop 配置 6. 使用 Docker 清理工具&#xff08;例如 D…