C++进阶(while循环——函数应用)

news2024/11/14 20:07:16

知识点+代码框架总结

输入n组数据 ,对n组数据里面的每一组进行处理(输出、求和 、运算、其他)


 int n;//几组数据
     cin >> n;//2
  
    
    while(n--){
      //对每组数据进行处理
     
    }
    看到下面的样例,肌肉型反映出上面的框架
    //2
    // 1 2 3
    // 4 5 6

若干组输入框架

int a; //方法一
while ( cin >> a ) {//不断地读入
  cout << a << " ";
}

int a; //方法二
while (scanf("%d", &a) == 1) {//当scanf接收到一个数据时(返回值为1)
  cout << a << " ";
}

int a; //方法三
while (scanf("%d", &a) != EOF) {//结束的时候返回EOF 
  cout << a << " ";
}

对数字拆分的框架


 int t = i;
 //拆分后肯定为0,不影响上面的for循环的进行,故使用t作为临时变量
        while (t)//对t进行拆分
        {                         // 345 345% 10=5 34%10 = 4
            cout << t % 10;//输出每一位 5 4 3 

            t = t / 10; // 345/10=34 34/10=3
        }

对于一维数组的框架


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

using namespace std;

int main()
{

    int arr[100];
    
    //第一步:对arr数组里面的元素进行赋值
    
    for(int i = 1;i <= n;i++){
      cin >> arr[i];//arr[1]  arr[2]...arr[n]
    }
    
    //第二步:对数组遍历+题目要求 do
    for(int i = 1;i <= n;i++){
      
      //题目要求进行填写主要内容
    }
    
    //第三步:根据要求是否要打印数组里面的这些值
    for(int i = 1;i <= n;i++){
      cout <<  arr[i] <<  " ";
    }
     
    return 0;
}

删除数组中第K个元素(位置为k)


for(int i = k + 1;i <= n;i++){

a[i-1] = a[i];

}

区间翻转的代码框架


for(int i = l,j=r;i < j;i++,j--){

//交换a[i] a[j]的位置

swap(a[i),a[j]);
}


二维数组的框架


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

using namespace std;

int main()
{

    int a[505][505] = { }; //假如数据范围是500
    int n, m;        // n行 m列

    //输入二维数组
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cin >> a[i][j];
        }
    }
    
    
    
    //根据题意去干什么事情 —— to do
     for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            //根据题意 to do  
            
        }
    }
    
    // 输出二维数组(根据题意)
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    
    

    return 0;
}

字符数组以及字符串函数

在这里插入图片描述

经典例题

计算A+B(4) —— 掌握若干组数据输入的框架

输入包含多个测试用例,一个用例一行。每种情况都以一个整数n开头,然后n个整数跟在同一行中。(数据均在int范围内)

样例输入:

4 1 2 3 4
5 1 2 3 4 5

样例输出:

10
15

**代码**#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{
    int n;
    while (cin >> n )
    {
        int res = 0;
        for (int i = 0; i < n; i++)
        {
            int num;
            cin >> num;
            res = res + num;
        }
        cout << res << endl;
    }

    return 0;
}

土仙花数——掌握数字拆分

定义土仙花数为各个数位乘积与该数本身的差的绝对值不超过 k 的数。
**样例输入1**

10 1

**样例输出1**

9

代码:
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    int n, k, count = 0; // count记录个数
    cin >> n >> k;       // 10 1
    for (int i = 1; i <= n; i++)
    {
        int t = i, sum = 1;
        while (t)
        {
            sum *= t % 10;
            t /= 10;
        }
        if (abs(sum - i) <= k)
            count++;
    }
    cout << count << endl;
    return 0;
}

打印分数——掌握一维数组的框架


输入n个成绩,打印出所有低于平均分的分数
#### Input 1

3 40 50 60
2 90 80
5 10 10 90 80 80

#### Output 1

40
80
10 10

代码:
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    int arr[110], n;
    while (cin >> n)
    {
        int sum = 0;
        for (int i = 1; i <= n; i++)
        {
            cin >> arr[i];
            sum = sum + arr[i];
        }
        for (int i = 1; i <= n; i++)
        {
            double p = sum * 1.0 / n;
            if (arr[i] < p)
                cout << arr[i] << " ";
        }
        cout << endl;
    }

    return 0;
}

删除某个数——掌握删除框架

对于给定长度为n的数列,删除指定位置上的数。
代码:
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    int n, m;
    cin >> n >> m; // 5 3

    int arr[1005];
    for (int i = 1; i <= n; i++)
    {
        cin >> arr[i]; // 1 2 3 4 5
    }
    // 1 2 3 4 5
    //

    for (int i = m + 1; i <= n; i++)
    {

        arr[i - 1] = arr[i]; // a[4]
    }

    for (int i = 1; i < n; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}

区间翻转——掌握区间翻转

有一个长为n的数列,共有m次操作。每次操作会翻转一个区间l到r。问最终序列?
#### **输入格式:**

第一行一个整数n,表示序列中的元素个数。

第二行n个整数,表示原序列。

第三行一个整数m,表示翻转次数。

接下来m行每行两个整数l,r。

#### **输出格式:**

一行n个整数,表示最终序列。

#### **样例输入:**

3
1 2 3 
1
1 2

#### **样例输出:**

2 1 3
代码:
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    int n;
    cin >> n; // 3

    int arr[1005];
    for (int i = 1; i <= n; i++)
    {
        cin >> arr[i]; // 1 2 3
    }
    int m;
    cin >> m; //翻转的次数 1 3
    for (int i = 1; i <= m; i++)
    {
        int l, r;
        cin >> l >> r;
        //翻转
        for(倒着不遍历l到r的区间){
          //把该区间的元素存入到临时数组t中,
          //每存入一个元素,数组t的有效长度增加1
        }
        for(正着遍历l到r的区间){
          //用数组t中的有效元素进行替换该区间数组a的元素
        }
            
    }
    for (int i = 1; i <= n; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}

拔苗助长——掌握模拟的过程

**输入格式:**

第一行输入一个整数n,表示秧苗的数量。

第二行输入n个数,表示每株秧苗的初始高度。

第三行输入一个整数m,表示农夫拔苗的天数。

接下来m行每行三个整数a,b,c,表示将第 a 株苗到第 b 株苗全部拔高 c 的高度

#### **输出格式:**

输出一行,包含�n个整数,以空格隔开,表示秧苗最终的高度

#### **样例输入:**

4
1 2 3 4
3
1 2 1
2 3 1
4 4 1

#### **样例输出:**

2 4 4 5

代码:
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    int n;
    cin >> n; //操作的次数 4
    int arr[1001];
    for (int i = 1; i <= n; i++)
    {
        cin >> arr[i]; //苗的初试状态  1 2 3 4
    }
    int m;
    cin >> m; //操作的次数
    for (int i = 1; i <= m; i++)
    {
        int l, r, h;
        cin >> l >> r >> h;

        for (int j = l; j <= r; j++)
        {
            arr[j] = arr[j] + h;
        }
    }

    for (int i = 1; i <= n; i++)
    {
        cout << arr[i] << " ";
    }

    return 0;
}


计算矩阵边缘元素之和——掌握二维数组的框架+总结规律


#### Input 1

3 3
3 4 1
3 7 1
2 0 1

#### Output 1

15

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    int n, m;
    cin >> n >> m;
    int a[105][105];
    int sum = 0;

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> a[i][j];
        }
    }
   

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (i == 0 || i == n - 1 || j == 0 || j == m - 1)
            {
                sum = sum + a[i][j];
            }
        }
    }

    cout << sum << endl;

    return 0;
}

蹦蹦炸弹——把8个方向的坐标写成两个一维数组进行遍历


#### Input 1

5 5
6 8 9 8 7 
9 9 6 6 5 
7 9 7 6 7 
5 7 7 8 7 
8 7 9 6 8

#### Output 1

26 39 37 33 19
39 61 62 55 34
39 57 58 53 32
38 59 59 57 35
19 36 35 39 21

### 数据范围

1<=1001<=n,m<=100

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{
    int n, m, a[105][105] = {};
    int dx[8] = {-1, 1, 0, 0, -1, -1, 1, 1};
    int dy[8] = {0, 0, -1, 1, -1, 1, -1, 1};
    int sum[105][105] = {};
    cin >> n >> m;

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cin >> a[i][j];
        }
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {

            // to do

            for (int k = 0; k < 8; k++)
            {
                int xx = dx[k] + i;
                int yy = dy[k] + j;
                sum[i][j] += a[xx][yy];
            }
        }
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cout << sum[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

友好数对——二维数组全部赋值为-1,避免重复


### 题目描述

读入一个n*m的矩阵,定义两个数是友好的,当且仅当他们位置相邻(上下左右)且值相同。求友好数对个数。

### 输入格式

第一行两个整数n,m  
之后n行,每行m个0100间的整数

### 输出格式

一个整数,表示答案。

### 样例

#### Input 1

5 4
3 3 3 4
2 0 0 3
0 3 1 4
3 4 3 3
1 0 3 3

#### Output 1

7

### 样例解释

测试样例解释:  
对于样例输入1,共有7对友好数字,分别是:  
(1,1)(1,2),  
(1,2)(1,3),  
(2,2)(2,3),  
(4,3)(4,4),  
(4,3)(5,3),  
(4,4)(5,4),  
(5,3)(5,4)。

### 数据范围

1<=n,m<=500

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    int n, m;
    cin >> n >> m;
    int cnt = 0; //记录个数
    int a[505][505]={};
    for (int i = 1; i <= 504; i++)
    {
        for (int j = 1; j <= 504; j++)
        {
            a[i][j] = -1;
        }
    }

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cin >> a[i][j];
        }
    }

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {

            if (a[i][j] == a[i][j + 1])
            {
                cnt++;
            }
            if (a[i][j] == a[i + 1][j])
            {
                cnt++;
            }
        }
    }
    cout << cnt << endl;

    return 0;
}

字母转换——基础必须掌握


样例输入:

q

样例输出:

Q

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    char ch;
    cin >> ch;
    cout << char(ch - 32);

    return 0;
}

字符串的大小关系——掌握strcmp()函数


### **输入格式**

输入共两行,每行一个无空格的字符串,分别表示两个需要比较大小的字符串s1和字符串s2。

### **输出格式**

共两行,第一行输出字典序小的字符串,第二行输出字典序大的字符串。

### **样例输入**

abd
abc

### **样例输出**

`abc` abd

### **数据范围与提示**

保证输入字符串长度不超过100

## 代码:

```C++

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

using namespace std;

int main()
{

    //定义字符数组a b
    char a[105], b[105];

    //输入这两个字符串
    cin >> a >> b;

    int t;
    t = strcmp(a, b); //赋值给字符串比较函数

    if (t < 0)
    {

        cout << a << endl << b;
        //输出小的 在输出大的
    }
    else
    {
        //输出小的 在输出大的
        cout << b << endl << a;
    }

    return 0;
}

验证子串——掌握strlen()函数以及strstr()函数


【题目描述】

输入两个字符串,验证其中一个串是否为另一个串的子串。

【数据格式】

输入两个字符串, 每个字符串占一行,长度不超过200且不含空格。

若第一个串s1是第二个串s2的子串,则输出(s1) is substring of (s2)

否则,若第二个串s2是第一个串s1的子串,输出(s2) is substring of (s1)

否则,输出 No substring。

样例输入:

abc
dddncabca

样例输出:

abc is substring of dddncabca

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    char s1[205], s2[205];
    cin >> s1 >> s2;

    int len1 = strlen(s1); // 3
    int len2 = strlen(s2); // 9

    if (strstr(s2, s1) != NULL && (len1 < len2))
    {

        cout << s1 << " "
             << "is substring of" <<" "<< s2;
    }
    else if (strstr(s1, s2) != NULL && (len1 > len2))
    {
        cout << s2 << " "
             << "is substring of"
             << " " << s1;
    }
    else
    {
        cout << "No substring" << endl;
    }
    return 0;
}

输出特殊字符串——掌握转义字符


**样例输出1**

He said:"The symbol is '\'".

**约定:**

**提示:**

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{
    cout << "He said:";
    cout << "\"The symbol is '\\'\".";

    return 0;
}

统计数字字符个数——基础必须掌握


### 样例

#### Input 1

Peking University is set up at 1898.

#### Output 1

4

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    string a;
    getline(cin, a);
    int len = 0;
    len = a.size();
    int cnt = 0;

    for (int i = 0; i < len; i++)
    {
        if (a[i] >= '0' && a[i] <= '9')
        {
            cnt++;
        }
    }

    cout << cnt << endl;
    return 0;
}

验证子串2——掌握字符型数字的比较:长度+字典序


### 输入格式

输入一行,包含两个数字字符串,两个字符串之间用空格隔开。

### 输出格式

输出两行:  
第一行两个字符串用空格隔开,分别是“大”字符串和“小”字符串;  
第二行输出"YES""NO",表示后者是否为前者的子串。

### 样例

#### Input 1

12345678912345 12345678912345

#### Output 1

12345678912345 12345678912345
YES

#### Input 2

12345 123456789 

#### Output 2

123456789 12345 
YES

#### Input 3

12345 223456789 

#### Output 3

223456789 12345 
NO

### 数据范围

1<=字符串长度<=10001<=字符串长度<=1000  
单个数字字符串不包含空格。

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    string a, b;
    cin >> a >> b;
    if (a.size() > b.size() || a.size() == b.size() && a > b)
    {
        cout << a << " " << b << endl;
        int pos = a.find(b);
        if (pos > 0)
            cout << "YES";
        else
            cout << "NO" << endl;
    }
    else
    {
        cout << b << " " << a << " " << endl;
        int pos = b.find(a);
        if (pos != string::npos)
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }

    return 0;
}

身份证信息——掌握substr()分割字符串函数


### 题目描述

18位身份证号意义如下:  
11-2位:各省级政府的代码;  
23-4位:地、市级政府代码;  
35-6位:县、区级政府代码;  
47-10位:持证人出生年份;  
511-121:持证人出生月份;  
613-14位:持证人出生当月日期;  
715-17位:持证人在当地的顺序码,性别等,其中奇数为男、偶数为女;  
8、第18位:校验码。

现在有n个人向你填报了自己的身份证号,你能找出其中年纪最大的是第几位吗?  
按输入顺序编号。如果有出生年月日都相同的,就输出最靠前的一位的序号。

### 输入格式

输入n+1行:  
第一行一个整数n,  
接下来n+1行,每行一个18位的身份证号。

### 输出格式

输出年纪最大的人的编号。

### 样例

#### Input 1

3
410181199707240021
410181200511250012
411181199707250352

#### Output 1

1
代码:
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{
    int n;
    cin >> n;
    string s[10005], s1, elderstr;
    elderstr = "99999999";
    int maxage = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> s[i];
        s1 = s[i].substr(6, 8);
        if (elderstr > s1)
        {
            elderstr = s1;
            maxage = i + 1;
        }
    }
    cout << maxage << endl;
    return 0;
}

卡牌收集Plus——字符串与数字进行绑定


**输入格式:** 

第一行两个整数n,m。n表示卡牌的总数,m表示有m次询问;

接下去n行,每行一个字符串和一个整数,表示卡牌的名称和攻击力;

最后一行,有m个以空格间隔的字符串,依序表示询问的卡牌名称。

**输出格式:**

仅一行,以空格间隔的m个整数,按照询问顺序输出结果。

**样例输入:**

2 2
Luffy 1200
Zoro 1100
Zoro Luffy

**样例输出:**

1100 1200

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    int n, m;
    cin >> n >> m; // n卡牌总数 m询问次数
    string s[2005];
    int a[2005];

    for (int i = 0; i < n; i++)
    {
        cin >> s[i] >> a[i];
    }

    string x;
    while (m--)
    {
        cin >> x; //字符串
        for (int i = 0; i < n; i++)
        {
            if (s[i] == x)
            {
                cout << a[i] << " ";
            }
        }
    }

    return 0;
}

判断字符串是否为回文——必须掌握


### 题目描述

输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。

### 输入格式

输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。

### 输出格式

如果字符串是回文,输出yes;否则,输出no。

### 样例

#### Input 1

abcdedcba

#### Output 1

yes

## 代码:

```C++
方法一:
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    string s;
    cin >> s;

    for (int x = 0, y = s.size() - 1; x <= y; x++, y--)
    {
        if (s[x] != s[y])
        {

            cout << "no" << endl;
            return 0;
        }
    }
    cout << "yes";

    return 0;
}

方法二:

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

using namespace std;

int main()
{

    string s, ss;
    cin >> s;
    ss = s;
    reverse(s.begin(), s.end());

    if (s == ss)
    {
        cout << "yes" << endl;
    }
    else
    {
        cout << "no" << endl;
    }

    return 0;
}

凯撒加密简单版——掌握


在古罗马,“高卢战争”描述了凯撒使用加密来传递信息,即所谓的“凯撒加密”,这是一种替代加密。消息中的每个字母都被其后面的第t个字母替换。例如,当t=4时,加密规则是用原始字母后的第4个字母替换原始字母, 字母“a”后的第四个字母是“e”,而“a”被“e”取代,字母“z”后的第四个字母是“d”,而“z”被“d”取代。因此,“china”将被翻译成“glmre”。请编写一个程序来加密输入的字符串,方法是将每个字母替换为后面的第t个字母。

输入格式:输入一个字符串并输入t

输出格式:标题中描述了输出格式。

示例输入1:

china 4

样本输出1:

glmre

示例输入2:

antdzyo 30

样本输出2:

erxhdcs

规定:

输入的字符串长度不超过100,只包含小写字母。t<=260

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

int main()
{

    string s;
    int t;
    cin >> s >> t;
    t = t % 26;
    int num = s.size();
    for (int i = 0; i < num; i++)
    {
        if (s[i] + t > 'z')
        {
            s[i] = (s[i] + t) % 'z' + 'a' - 1;
        }
        else
        {
            s[i] += t;
        }
    }
    cout << s;

    return 0;
}

最大公约数和最小公倍数——基础必须掌握两个函数


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

using namespace std;

int fun1(int a, int b)
{
    //最大公约数
    return __gcd(a, b);
}
int fun2(int a, int b)
{
    //最小公倍数
    return a * b / __gcd(a, b);
}

int main()
{

    int a, b;
    cin >> a >> b;

    int c, d;
    c = fun1(a, b);
    d = fun2(a, b);
    cout << c << endl << d;

    return 0;
}

绝对素数——基础必须掌握思路(考察函数的使用)


### 题目描述

如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13。试求出所有二位绝对素数。

### 输入格式

无

### 输出格式

所有二位绝对素数(由小到大,一个数一行)。

### 样例

#### Input 1

无

#### Output 1

无

## 代码:

```C++
#include <bits/stdc++.h>
#include <vector>

using namespace std;

bool prime(int x)
{

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

int main()
{

    for (int i = 10; i < 100; i++)
    {
        if (prime(i) && prime(i % 10 * 10 + i / 10))
            cout << i << endl;
    }
    return 0;
}


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

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

相关文章

Golang | Leetcode Golang题解之第233题数字1的个数

题目&#xff1a; 题解&#xff1a; func countDigitOne(n int) (ans int) {// mulk 表示 10^k// 在下面的代码中&#xff0c;可以发现 k 并没有被直接使用到&#xff08;都是使用 10^k&#xff09;// 但为了让代码看起来更加直观&#xff0c;这里保留了 kfor k, mulk : 0, 1;…

二叉搜索树大冒险:寻找-插入-删除

OK&#xff0c;看我们题目就可知道啦&#xff0c;今天要分享学习的一种数据结构就是二叉搜索树。 内容题目也说了三个大概的&#xff0c;分别是寻找、插入、删除。 讲这个之前呢&#xff0c;那么就先讲讲这个二叉搜索树是何方神圣呢&#xff1f; 二叉搜索树&#xff1a; 又…

移动端 火星坐标体系、百度坐标体系和全球坐标体系,该如何选择?

项目场景&#xff1a; 在梳理项目代码时&#xff0c;看到代码中的WGS-84&#xff0c;忽然想起有次面试问我这个问题&#xff0c;今天就好好的梳理下这个问题。 问题描述 移动端获取定位一般用什么编码&#xff1f;为什么要用这个&#xff1f; 原因分析&#xff1a; 解决方案&…

J025_斗地主游戏案例开发(简版)

一、需求描述 完成斗地主游戏的案例开发。 业务&#xff1a;总共有54张牌&#xff1b; 点数&#xff1a;3、4、5、6、7、8、9、10、J、Q、K、A、2 花色&#xff1a;黑桃、红桃、方片、梅花 大小王&#xff1a;大王、小王 点数分别要组合4种花色&#xff0c;大小王各一张。…

LeetCode --- 134双周赛

题目 3206. 交替组 I 3207. 与敌人战斗后的最大分数 3208. 交替组 II 3209. 子数组按位与值为 K 的数目 一、交替组 I & II 题目中问环形数组中交替组的长度为3的子数组个数&#xff0c;主要的问题在于它是环形的&#xff0c;我们要考虑首尾相接的情况&#xff0c;如何…

【流媒体】 通过ffmpeg硬解码拉流RTSP并播放

简介 目前RTSP拉流是网络摄像头获取图片数据常用的方法&#xff0c;但通过CPU软解码的方式不仅延时高且十分占用资源&#xff0c;本文提供了一种从网络摄像头RTSP硬解码的拉流的方法&#xff0c;并且提供python代码以便从网络摄像头获取图片进行后续算法处理。 下载ffmpeg F…

回归求助 教程分享

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 今日 217/10000 抱个拳&#xff0c;送个礼 更多内容&#xff0c;见微*公号往期文章&#xff1a;通透&#xff01;&#xff01;十大回…

Python | Leetcode Python题解之第233题数字1的个数

题目&#xff1a; 题解&#xff1a; class Solution:def countDigitOne(self, n: int) -> int:# mulk 表示 10^k# 在下面的代码中&#xff0c;可以发现 k 并没有被直接使用到&#xff08;都是使用 10^k&#xff09;# 但为了让代码看起来更加直观&#xff0c;这里保留了 kk,…

计算机网络——网络层(IP地址与MAC地址、地址解析协议ARP、IP数据报格式以及转发分组、ICMP、IPV6)

IP地址与MAC地址 由于MAC地址已固化在网卡上的ROM 中&#xff0c;因此常常将 MAC地址称为硬件地址或物理地址&#xff1b;物理地址的反义词就是虚拟地址、软件地址或逻辑地址&#xff0c;IP地址就属于这类地址。 从层次的角度看&#xff0c;MAC地址是数据链路层使用的地址&…

基于lstm的股票Volume预测

LSTM&#xff08;Long Short-Term Memory&#xff09;神经网络模型是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;它在处理长期依赖关系方面表现出色&#xff0c;尤其适用于时间序列预测、自然语言处理&#xff08;NLP&#xff09;和语音识别等领域。以下是…

特殊记忆柱群、特殊感觉中枢、强度中枢

智能软件的某些思维状态的标志&#xff0c;能够被一般感觉中枢“先天”感知&#xff0c;或者是与一般感觉中枢“后天”建立记忆联系。在它们建立奖惩记忆联系后&#xff0c;这些思维状态能够兴奋特殊感觉中枢或者一般感觉中枢对应的记忆柱群&#xff0c;也能够被相应感觉中枢的…

【大模型书籍】复旦新出!大规模语言模型:从理论到实践(推荐)

自2018年以来&#xff0c;包含Google、OpenAI、Meta、百度、华为等公司和研究机构都纷纷发布了包括BERT&#xff0c; GPT等在内多种模型&#xff0c;并在几乎所有自然语言处理任务中都表现出色。 今天给大家推荐一本大模型方面的书籍<大规模语言模型&#xff1a;从理论到实…

【数学建模】——力学模型建立的基本理论及方法

目录 一、基本理论 1. 牛顿力学 1.1 牛顿第一定律&#xff08;惯性定律&#xff09; 1.2 牛顿第二定律&#xff08;动力学定律&#xff09; 1.3 牛顿第三定律&#xff08;作用反作用定律&#xff09; 2. 能量守恒定律 2.1 动能和势能 2.2 能量守恒 3. 动量守恒定律…

简易秒表的实现

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 参考代码 描述 请编写一个模块&#xff0c;实现简易秒表的功能&#xff1a;具有两个输出&#xff0c;当输出端口second从1-60循环计数&#xff0c;每当second计数到60&#xff0c;输出端口minute加一&#xff0c;一直…

java配置nginx网络安全,防止国外ip访问,自动添加黑名单,需手动重新加载nginx

通过访问日志自动添加国外ip黑名单 创建一个类&#xff0c;自己添加一个main启动类即可测试 import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.json.JSONArray; import org.json.JSONObject; import org.sp…

Azcopy Sync同步Azure文件共享

Azcopy Sync同步Azure文件共享 一、工作原理二、安装 AzCopy在 Windows 上在 Linux 上 三、资源准备1. 创建源和目标 Azure 存储账户2. 创建源和目标文件共享3. 确定路径4. 生成源和目的存储账户的共享访问签名&#xff08;SAS&#xff09;令牌配置权限示例生成的 URL 四、Azco…

Java小白入门到实战应用教程-开发环境搭建-IDEA2024安装激huo详细教程

writer:eleven 安装IDEA2024 一、下载IDEA 推荐大家去官网下载 我这里也给大家直接准备了安装包&#xff0c;和激huo教程&#xff0c;大家可以自行下载使用。 注意&#xff1a;激huo教程只用于学习交流&#xff0c;不可商用。 IDEA2024安装包及激huo教程 说明&#xff1a…

prompt第二讲-langchain实现中英翻译助手

文章目录 prompt模板 (prompt template)langchain 中的prompt模板 (prompt template)langchain实现中英翻译助手 prompt模板 (prompt template) 开篇我介绍了在llm中&#xff0c;通常输入的那个字符串会被我们称之为prompt&#xff0c;下面就是一个中英文翻译助手的prompt例子…

使用F1C200S从零制作掌机之USB从机

OTG做从机&#xff0c;实现使用RNIDS功能访问网络&#xff0c;实现模拟成U盘PC可访问。 最后实现OTG的软件主从切换。 一、RNDIS 设备树的otg模式先设置为&#xff1a;peripheral &usb_otg {dr_mode "peripheral"; /* otg host peripheral */status "…

基于springboot+vue+uniapp的超市购物系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…