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()函数已经将前面的池塘扫描并赋为-12 为什么可以使用“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..Wans: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()函数已经将前面的池塘扫描并赋为-12 为什么可以使用“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..Wans: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;//输入 nfor(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 201背包问题总解决方案
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,mfor(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,mfor(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]);
        }
    }

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【玩具蛇——DFS】

题目 代码 #include <bits/stdc.h> using namespace std; int g[5][5]; int dx[] {0, 0, -1, 1}, dy[] {-1, 1, 0, 0}; int ans; void dfs(int x, int y, int t) {g[x][y] t;if (t > 16){ans;g[x][y] 0;return;}for (int i 0; i < 4; i){int nx x dx[i], n…

aar打包以及混淆问题

我们做sdk&#xff0c;经常要打成aar包。 如何打aar包&#xff1f; 1、首先module必须是library 2、build.gradle写的应用aar和module&#xff0c;要改成compileOnly&#xff0c;这样打包的时候就不会报错&#xff0c;因为aar不允许包含其他aar 3、 4、 aar包如何混淆 bui…

hhdb数据库介绍(9-14)

SQL语法支持 DML语句 在关系集群数据库中&#xff0c;DML语句的逻辑将变的更为复杂。计算节点将DML语句分为两大类&#xff1a;单库DML语句与跨库DML语句。 单库DML语句&#xff0c;指SQL语句只需在一个节点上运行&#xff0c;即可计算出正确结果。假设分片表customer分片字…

IDEA旗舰版编辑器器快速⼊门(笔记)

简介&#xff1a;javaweb开发必备软件之IDEA期间版介绍 DEA编辑器器版本介绍 官⽹网&#xff1a;https://www.jetbrains.com/地址&#xff1a;https://www.jetbrains.com/idea/download/#sectionmac DEA 分社区版(Community) 和 旗舰版(Ultimate)&#xff0c;我们做JavaWeb开…

HTML5实现剪刀石头布小游戏(附源码)

文章目录 1.设计来源1.1 主界面1.2 皮肤风格1.2 游戏中界面 2.效果和源码源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/143798520 HTM…

DAY65||Bellman_ford 队列优化算法(又名SPFA)|bellman_ford之判断负权回路|bellman_ford之单源有限最短路

Bellman_ford 队列优化算法&#xff08;又名SPFA&#xff09; 94. 城市间货物运输 I 思路 大家可以发现 Bellman_ford 算法每次松弛 都是对所有边进行松弛。 但真正有效的松弛&#xff0c;是基于已经计算过的节点在做的松弛。 给大家举一个例子&#xff1a; 本图中&#xff…

关于adb shell登录开发板后terminal显示不完整

现象 今天有个同事跟我说&#xff0c;adb shell 登录开发板后&#xff0c;终端显示不完整&#xff0c;超出边界后就会出现奇怪的问题&#xff0c;比如字符覆盖显示等。如下图所示。 正常情况下应该如下图所示&#xff1a; 很明显&#xff0c;第一张图的显示区域只有完整区域…

01 P2367 语文成绩

题目&#xff1a; 样例输入&#xff1a; 3 2 1 1 1 1 2 1 2 3 1 样例输出&#xff1a; 2 代码&#xff1a; #include<bits/stdc.h> using namespace std;long long sa[5000005]; long long sb[5000005];int main() {int n,p;cin>>n>>p;for(int i1;i<n;i)…

聊聊Flink:Flink的分区机制

一、前言 flink任务在执行过程中&#xff0c;一个流&#xff08;stream&#xff09;包含一个或多个分区&#xff08;Stream partition&#xff09;。TaskManager中的一个slot的subtask就是一个stream partition&#xff08;流分区&#xff09;&#xff0c;一个Job的流&#xf…

VRRP HSRP GLBP 三者区别

1. VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议&#xff09; 标准协议&#xff1a;VRRP 是一种开放标准协议&#xff08;RFC 5798&#xff09;&#xff0c;因此支持的厂商较多&#xff0c;通常用于多种网络设备中。主备模式&#xff1a;…

VMware 17虚拟Ubuntu 22.04设置共享目录

VMware 17虚拟Ubuntu 22.04设置共享目录 共享文件夹挂载命令&#xff01;&#xff01;&#xff01;<font colorred>配置启动自动挂载Chapter1 VMware 17虚拟Ubuntu 22.04设置共享目录一、卸载老版本二、安装open-vm-tools<font colorred>三、配置启动自动挂载四、添…

二叉树Golang

二叉树 前言 完全二叉树 最底层节点按顺序从左到右排列。 满二叉树 一颗二叉树只有0度和2度的节点。 二叉搜索树 左子树上的所有节点的值均小于根节点的值。右子树上的所有节点的值均大于根节点的值。 平衡二叉搜索树 左右两个子树的高度差的绝对值不超过1 。 二叉树的存储…

【鸿蒙开发】第十三章 ArkTS基础类库-容器(数据结构)

目录 1 容器简述 2 线性容器 2.1 ArrayList 2.2 Vector 2.3 List 2.4 LinkedList 2.5 Deque 2.6 Queue 2.7 Stack 2.8 线性容器的使用 3 非线性容器 3.1 HashMap 3.2 HashSet 3.3 TreeMap 3.4 TreeSet 3.5 LightWeightMap 3.6 LightWeightSet 3.7 PlainArray…

3D电子商务是什么?如何利用3D技术提升销售转化?

在数字化浪潮席卷全球的今天&#xff0c;网上购物已成为消费者日常生活中不可或缺的一部分。然而&#xff0c;尽管其便捷性无可比拟&#xff0c;但传统电商模式中的“看不见、摸不着”问题始终困扰着消费者与商家。商品是否符合期望、尺寸是否合适、颜色是否真实……这些不确定…

腾讯地图GL JS点标识监听:无dragend事件的经纬度获取方案

引入腾讯地图SDK <!--腾讯地图 API--><script charset"utf-8" src"https://map.qq.com/api/gljs?librariestools&v1.exp&key***"></script>构建地图容器 <div class"layui-card"><div class"layui-car…

基于SpringBoot+RabbitMQ完成应⽤通信

前言&#xff1a; 经过上面俩章学习&#xff0c;我们已经知道Rabbit的使用方式RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客 RabbitMQ的工作队列在Spring Boot中实现&#xff08;详解常⽤的⼯作模式&#xff09;-CSDN博客作为⼀个消息队列,RabbitMQ也可以⽤作应⽤程…

3. Spring Cloud Eureka 服务注册与发现(超详细说明及使用)

3. Spring Cloud Eureka 服务注册与发现(超详细说明及使用) 文章目录 3. Spring Cloud Eureka 服务注册与发现(超详细说明及使用)前言1. Spring Cloud Eureka 的概述1.1 服务治理概述1.2 服务注册与发现 2. 实践&#xff1a;创建单机 Eureka Server 注册中心2.1 需求说明 图解…

2024年11月第2个交易周收盘总结

计划自己的交易&#xff0c;交易自己的计划! 跟随市场而情绪波动&#xff0c;最终一定会导向失败&#xff01;连续、平稳、冷静地惯彻交易计划&#xff0c;比什么都重要&#xff01; 交易本身是极其简单和清楚的&#xff0c;让事情变复杂的原因不是行情走势和交易本身&#x…

一种时间戳对齐的方法(离线)

这段代码的主要功能是: 读取指定目录下的 pcd 文件和 jpg 文件。对于每个 pcd 文件,在 jpg 目录中找到时间戳最接近的 jpg 文件。将找到的 jpg 文件复制到对应的输出目录,实现时间戳对齐。 这种时间戳对齐的操作在多传感器数据融合中非常常见,它确保了不同传感器采集的数据在时…

【数据分享】全国农产品成本收益资料汇编(1953-2024)

数据介绍 一、《全国农产品成本收益资料汇编 2024》收录了我国2023年主要农产品生产成本和收益资料及 2018年以来六年的成本收益简明数据。其中全国性数据均未包括香港、澳门特别行政区和台湾省数据。 二、本汇编共分七个部分,即:第一部分,综合;第二部分,各地区粮食、油料;第…