大三上算法习题

news2024/11/23 21:53:10

难度:1

1 二分查找返回关键值key在长度为len的数组arr[]中的位置,没有key则返回-1

int bi_search( int key, int arr[], int len )

//1 二分查找返回关键值key在长度为len的数组arr[]中的位置,没有key则返回-1

#include <iostream>
using namespace std;

int binSearch(int arr[], int len, int key)
{
	int low = 0;
	int high = len - 1;
	int mid;
	while(low <= high)
	{
		mid = (low+high)/2;
		if(key == arr[mid]) return arr[mid];
		else if(arr[mid]>key) high=mid-1;
		else low=mid+1;
	}
	return -1;
}

int main(){
	int arr[] = {1,2,3,4,5,6,7,8,9,10,11};
	int key = 0;
	printf("输入你要查找的数:\n");
	scanf("%d",&key);
	printf("查找的数 %d 在数组中的位置为:%d\n",key,binSearch(arr,sizeof(arr)/sizeof(arr[0]),key));
	
	return 0;
} 

执行效果:
在这里插入图片描述

2 实现指定整数的三种查询方法:

int linear_search( int arr[], int len, int key )

#include <iostream>

using namespace std;

int better_search(int arr[],int len,int key){
	int i;
	for(i=len-1;i>=0;i--){
		if (arr[i]==key) 
		{
			break;
		}
	} 
	return i;
}

int main(){
	int n=10;
	int arr[11]={0};
	printf("输入长度为10 的数组:\n");
	for(int i=0;i<n;i++){
		scanf("%d",&arr[i]);
	} 
	int key;
	printf("输入要查找的数:\n");
    scanf("%d",&key);
	printf("要查找的数的位置为:%d",better_search(arr,sizeof(arr)/sizeof(arr[0]),key));
	return 0;
}

执行结果:
在这里插入图片描述
int better_search( int arr[], int len, int key )

#include <iostream>

using namespace std;

int linear_search(int arr[],int len,int key){
	for(int i=0;i<len;i++){
		if (arr[i]==key) 
		{
			return i;
		}
	} 
	return -1;
}

int main(){
	int n=10;
	int arr[11]={0};
	printf("输入长度为10 的数组:\n");
	for(int i=0;i<n;i++){
		scanf("%d",&arr[i]);
	} 
	int key;
	printf("输入要查找的数:\n");
    scanf("%d",&key);
	printf("要查找的数的位置为:%d",linear_search(arr,sizeof(arr)/sizeof(arr[0]),key));
	return 0;
}

执行结果:
在这里插入图片描述
int sentinel_linear_search( int arr[], int len, int key )

#include <iostream>
using namespace std;

int search(int arr[ ], int n, int k) 
{   
     int i = n; 
     arr[0] = k; //0位置空出来
     while (arr[i] != k)//要么在1--n处找到,要么在0处出while循环
        i--;
     return i;
}


int main(){
	int n=10;
	int arr[11]={0};
	printf("输入长度为10 的数组:\n");
	for(int i=0;i<n;i++){
		scanf("%d",&arr[i]);
	} 
	int key;
	printf("输入要查找的数:\n");
    scanf("%d",&key);
	printf("要查找的数的位置为:%d",search(arr,sizeof(arr)/sizeof(arr[0]),key));
	return 0;
}

执行结果:
在这里插入图片描述

3 用递归的方法求解斐波那契数列第n项的值:

long fib( int n ) // 返回斐波那契数列第n项的值

#include <iostream>
using namespace std;

int f(int n){
	if(n==1||n==2) return 1;
	else{
		return f(n-1)+f(n-2);
	}
}
int main(){
	printf("请输入要求第几个斐波那契数:\n");
	int n;
	scanf("%d",&n);
	printf("第%d个斐波那契数的值为:%d",n,f(n));
	
	return 0; 
}

执行结果:
在这里插入图片描述

4 数组反转,给定长度为len的数组arr[],请将里面的元素反转,

如开始为{1,5,6,2,6,7,8} 反转后为{8,7,6,2,6,5,1}
void reverse( int arr[], int len )

int reverse(int arr[]){
	int temp = 0;
	int n = arr.size();
	for(int i = 0; i< n/2; i++){
		temp = arr[n-i-1];
		arr[n-i-1] = arr[i];
		arr[i] = temp;
	}
	return arr;
}

5 给定一个字符串,若里面含有相同的字母则返回1,否则返回0.

#include <iostream>

using namespace std;

int hashtable[1000];
int check(string a,int len){
	for(int i=0;i<a.size();i++){

		if(hashtable[a[i]]!=0) return 1;
		hashtable[a[i]]=1;
	}
	return 0;
}

int main(){
	string a;
	getline(cin,a);
	int len=a.length();
	
	printf("%d",check(a,len));
}

难度:2

1 递归实现:二分查找返回关键值key在长度为len的数组arr[]中的位置,没有key则返回-1 int rec_bi_search( int key, int arr[], int low, int high )

#include <iostream>
using namespace std;

int binSearch(int arr[], int len, int key)
{
	int low = 0;
	int high = len - 1;
	int mid;
	while(low <= high)
	{
		mid = (low+high)/2;
		if(key == arr[mid]) return arr[mid];
		else if(arr[mid]>key) high=mid-1;
		else low=mid+1;
	}
	return -1;
}

int main(){
	int arr[] = {1,2,3,4,5,6,7,8,9,10,11};
	int key = 0;
	printf("输入你要查找的数:\n");
	scanf("%d",&key);
	printf("查找的数 %d 在数组中的位置为:%d\n",key,binSearch(arr,sizeof(arr)/sizeof(arr[0]),key));
	
	return 0;
} 

2 用优化递归方法,求解斐波那契数列第n项的值: long fib( int n, long result[], int len ) 返回斐波那契数列第n项的值,,result[i]存储第i项的值,len是result的长度。

动态规划法:把每一个计算出来的数据,用一个数组保存,需要最终值时直接从数组中取即可,避免重复计算。有一个for循环,其时间复杂度为O(n),开辟一个长度为n的数组,所以空间复杂度也为O(n)

1 public int fib(int n) {
2     int[] fib = new int[n];
3     fib[0] = 1;
4     fib[1] = 1;
5     for (int i = 2; i < n; i++) {
6         fib[i] = fib[i - 2] + fib[i - 1];
7     }
8     return fib[n - 1];
9 }

3 用选择排序的方法实现对整型数据由小到大进行排序 void select_sort( int arr[], int len ) arr为数组名,len为数组的长度。

#include <iostream>

using namespace std;

void selectionSort(int arr[], int n) {
 
    for (int i = 0; i < n; i++) {
        // 寻找[i, n)区间里的最小值
        int minIndex = i;
        for (int j = i + 1; j < n; j++)
            if (arr[j] < arr[minIndex])
                minIndex = j;
 
        swap(arr[i], arr[minIndex]);
    }
 
}


void swap(int arr[], int i, int j) {
	int tmp = arr[i];
	arr[i] = arr[j];
	arr[j] = tmp;
}

int main(){
	int arr[10] = {3,5,4,2,7,23,56,6,51,76};
	selectionSort(arr,10);
	for(int i=0;i<10;i++){
		printf("%d ",arr[i]);
	}
}

4 用插入排序的方法实现对整型数据由小到大进行排序 void insert_sort( int arr[], int len ) arr为数组名,len为数组的长度。

#include<iostream>
using namespace std;
int main() {
	int a[6] = { 2, 6, 5, 3, 4, 1};
	int temp, i, j;
	int n = 6;
	for (i = 1; i < 6; i++) {  // 数组的下标是从0开始的
		// 这里从第二个数开始枚举  即假定第一个数是有序的
		temp = a[i]; j = i;     // 这里temp 临时储存每一次需要排序的数
		while (j >= 1 && temp < a[j - 1]) {
			a[j] = a[j - 1];
			j--;
		}
		a[j] = temp;
	}
	for (i = 0; i < 6; i++) {
		cout << a[i] << " ";
	}
	cout << endl;
	return 0;
}

难度:3

1 判断字符串中的括号是否正确匹配,如正确的匹配()、()[]{}、{[]}、{([])}、错误的匹配{)、{[)}等等 正确返回1,错误返回0

#include <iostream>
#include <cstring>
#include <stack>
 
using namespace std;
 
int main()
{
    stack<char>a;
    int flag=1,i;
    char ch[100];
    cin>>ch;
    for(i=0;i<strlen(ch);i++){
        if(ch[i]=='{'||ch[i]=='('||ch[i]=='[')
            a.push(ch[i]);
        else{
            if(a.empty()==true){
                flag=0;
                break;
            }
            else if((ch[i]=='}'&&a.top()=='{')||(ch[i]==')'&&a.top()=='(')||(ch[i]==']'&&a.top()=='['))
                a.pop();
            else{
                flag = 0;
                break;
            }
        }
    }
    if(flag==0)
        cout<<"no";
    else
        cout<<"yes";
}

2 用快速排序的方法实现对整型数据由小到大进行排序 void quick_sort( int arr[], int len )

//快速排序
#include <iostream> 
using namespace std;
void QuickSort(int *array,int low,int high){	//快排 
	if(low>=high){	//若待排序序列只有一个元素,返回空 
		return ;
	}
	int i=low;	//i作为指针从左向右扫描 
	int j=high;	//j作为指针从右向左扫描
	int key=array[low];//第一个数作为基准数 
	while(i<j){
		while(array[j]>=key&&i<j){	//从右边找小于基准数的元素 (此处由于j值可能会变,所以仍需判断i是否小于j) 
			j--;	//找不到则j减一 
		}
		array[i]=array[j];	//找到则赋值 
		while(array[i]<=key&&i<j){	//从左边找大于基准数的元素 
			i++;	//找不到则i加一 
		}
		array[j]=array[i];	//找到则赋值 
	}
	array[i]=key;	//当i和j相遇,将基准元素赋值到指针i处 
	QuickSort(array,low,i-1);	//i左边的序列继续递归调用快排 
	QuickSort(array,i+1,high);	//i右边的序列继续递归调用快排 
}
int main(){
	int array[]={49,38,65,97,76,13,27,49};
	int length=sizeof(array)/sizeof(*array);
	cout<<"原始序列:";
	for(int i=0;i<length;i++){
		cout<<array[i]<<" ";
	}
	cout<<endl;
	QuickSort(array,0,length-1);
	cout<<"快排序列:";
	for(int i=0;i<length;i++){
		cout<<array[i]<<" ";
	}
	return 0;
}

3 给定长度为len的数组arr,打印出数组元素的所有排序。 如arr[4]={3,5,2,7},则输出这4个整数的24种排列形式

#include<iostream>
using namespace std;
//交换
void swap(int &a , int &b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
 } 
 //全排列递归算法
void Perm(int list[] , int k ,int m) 
{
	//list 数组存放排列的数,K表示层 代表第几个数,m表示数组的长度
	if(k==m)
	{
		//K==m 表示到达最后一个数,不能再交换,最终的排列的数需要输出;
		for(int i=0 ;i<=m ;i++)
		 cout<<list[i];
		 cout<<endl; 
	 } 
	 else{
	 	for(int i=k;i<=m;i++)
	 	{
	 		swap(list[i],list[k]);
	 		Perm(list,k+1,m);
	 		swap(list[i] , list[k]);
		 }
	 }
	 
}
int main(void)
{
   int a[]={1,2,3};
   int m=2;
   Perm(a,0,2);
 } 

4 字符串定位:返回字符串str,在字符串dest中出现的位置(第一个字母),没有出现则返回-1 int locate(char* str, char* dest) 例如 locate( “abc”, “fadbabdabcda”) 则返回7

滑动窗口

int slideToSubString_III(string str, string sub) {
    int i = 0, j = 0;
    int index = 0;
    while (i < str.length() && j < sub.length()) {
        if (str[i] == sub[j]) {
            i++;
            j++;
        } else {
            i = i - j + 1;
            j = 0;
        }
        if (j == sub.length()) {
            return i - j;
        }
    }
    return 0;
}

难度:4

1 计算正确的四则整形运算表达式的值。输入一个正确四则整形运算表达式字符串,输出计算结果(除法可以直接执行整数除,不考虑小数,如5/4等于1)。如输入“(17+3)/4+2",输出7。

#include <iostream>
#include <string>
#include <stack>
#include <unordered_map>

using namespace std;

stack<char> op;
stack<int> num;
unordered_map<char, int> pr = {{'+', 1}, {'-', 1}, {'*', 2}, {'/', 2}};

void eval()
{
    int b = num.top(); num.pop();
    int a = num.top(); num.pop();
    char c = op.top(); op.pop();

    int x;
    if(c == '+') x = a + b;
    else if(c == '-') x = a - b;
    else if(c == '*') x = a * b;
    else x = a / b;

    num.push(x);
}

int main()
{
    string s;
    cin >> s;

    for(int i = 0; i < s.size(); i++)
    {
        char c = s[i];
        if(isdigit(c))
        {
            int x = 0, j = i;
            while(j < s.size() && isdigit(s[j])) x = 10 * x + s[j++] - '0';
            i = j - 1;
            num.push(x);
        }
        else if(c == '(') op.push(c);
        else if(c == ')')
        {
            while(op.size() && op.top() != '(') eval();
            op.pop();
        }
        else
        {
            while(op.size() && pr[op.top()] >= pr[c]) eval();
            op.push(c);
        }
    }
    while(op.size()) eval();
    cout << num.top() << endl;

    return 0;
}


2 对n个等长(长度为len)的字符串进行字典顺序排序 sort_str( char* str[], int len, int n )

#include <vector>
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

bool cmp(string a, string b)
{
    return a < b;
}

int main()
{
    int num;
    string str;
    vector<string> v;
    while (cin >> num)
    {
        while (num--)
        {
            cin >> str;
            v.push_back(str);
        }

        sort(v.begin(),v.end(),cmp);
        cout << endl;
        for (int i = 0; i < v.size(); i++)
        {
            cout << v[i] << endl;
        }
    }


    return 0;
}

3 建立10个节点的有向图,由用户输入节点对来完成。由用户指定一个源点,输出所有与之连通的所有结点的最短路径及路径长度。

int graph[10][10];
int shortest[10];
int pred[10];
void create_graph( void )
void dijkstra( int source )
void show_shortest_path( int source )

#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>

using namespace std;

typedef pair<int, int> PII;

const int N = 1e6 + 10;

int n, m;
int h[N], w[N], e[N], ne[N], idx;
int dist[N];
bool st[N];

void add(int a, int b, int c)
{
    e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++ ;
}

int dijkstra()
{
    memset(dist, 0x3f, sizeof dist);
    dist[1] = 0;
    priority_queue<PII, vector<PII>, greater<PII>> heap;
    heap.push({0, 1});

    while (heap.size())
    {
        auto t = heap.top();
        heap.pop();

        int ver = t.second, distance = t.first;

        if (st[ver]) continue;
        st[ver] = true;

        for (int i = h[ver]; i != -1; i = ne[i])
        {
            int j = e[i];
            if (dist[j] > dist[ver] + w[i])
            {
                dist[j] = dist[ver] + w[i];
                heap.push({dist[j], j});
            }
        }
    }

    if (dist[n] == 0x3f3f3f3f) return -1;
    return dist[n];
}

int main()
{
    scanf("%d%d", &n, &m);

    memset(h, -1, sizeof h);
    while (m -- )
    {
        int a, b, c;
        scanf("%d%d%d", &a, &b, &c);
        add(a, b, c);
    }

    cout << dijkstra() << endl;

    return 0;
}

4 利用数组实现堆的三种基本操作, 插入元素:void insert( int x, int heap[], int len) 删除元素:int delete( int heap[], int len ) 更新元素:void update( int x, int pos, int heap[], int len ) x 为插入或新元素, heap为堆,len是堆的尺寸,pos是新元素的位置。

#include<iostream>
#include<algorithm>
using namespace std;

const int N=1e5+10;
int h[N];   //堆
int ph[N];  //存放第k个插入点的下标
int hp[N];  //存放堆中点的插入次序
int cur_size;   //size 记录的是堆当前的数据多少

//这个交换过程其实有那么些绕 但关键是理解 如果hp[u]=k 则ph[k]=u 的映射关系
//之所以要进行这样的操作是因为 经过一系列操作 堆中的元素并不会保持原有的插入顺序
//从而我们需要对应到原先第K个堆中元素
//如果理解这个原理 那么就能明白其实三步交换的顺序是可以互换 
//h,hp,ph之间两两存在映射关系 所以交换顺序的不同对结果并不会产生影响
void heap_swap(int u,int v)
{   
    swap(h[u],h[v]); 
     swap(hp[u],hp[v]);     
     swap(ph[hp[u]],ph[hp[v]]);            

}

void down(int u)
{
    int t=u;
    if(u*2<=cur_size&&h[t]>h[u*2]) t=u*2;
    if(u*2+1<=cur_size&&h[t]>h[u*2+1])  t=u*2+1;
    if(u!=t)
    {
        heap_swap(u,t);
        down(t);
    }
}
void up(int u)
{
    if(u/2>0&&h[u]<h[u/2]) 
    {
        heap_swap(u,u/2);
        up(u>>1);
    }
}

int main()
{
    int n;
    cin>>n;
    int m=0;      //m用来记录插入的数的个数
                //注意m的意义与cur_size是不同的 cur_size是记录堆中当前数据的多少
                //对应上文 m即是hp中应该存的值
    while(n--)
    {
        string op;
        int k,x;
        cin>>op;
        if(op=="I")
        {
            cin>>x;
            m++;
            h[++cur_size]=x;
            ph[m]=cur_size;
            hp[cur_size]=m;
            //down(size);
            up(cur_size);
        }
        else if(op=="PM")    cout<<h[1]<<endl;
        else if(op=="DM")
        {
            heap_swap(1,cur_size);
            cur_size--;
            down(1);
        }
        else if(op=="D")
        {
            cin>>k;
            int u=ph[k];                //这里一定要用u=ph[k]保存第k个插入点的下标
            heap_swap(u,cur_size);          //因为在此处heap_swap操作后ph[k]的值已经发生 
            cur_size--;                    //如果在up,down操作中仍然使用ph[k]作为参数就会发生错误
            up(u);
           down(u);
        }
        else if(op=="C")
        {
            cin>>k>>x;
            h[ph[k]]=x;                 //此处由于未涉及heap_swap操作且下面的up、down操作只会发生一个所以
            down(ph[k]);                //所以可直接传入ph[k]作为参数
            up(ph[k]);
        }

    }
    return 0;
}



5 输入一段文本,打印输出对应的哈夫曼编码: void hfm(char str[], int len)

6 建立6个节点的无向图。由用户指定一个源点、一个终点,输出从源点到终点的所有路径及长度。

7 在2行5列的格子中填入1到10的数字。要求:相邻的格子中的数,右边的大于左边的,下边的大于上边的。请你计算一共有多少种可能的方案,并输出所有的方案。

#include<stdio.h>
 
int a[2][5];
int cou = 0;
int flag[10];
int check()
{
	if (a[1][0] < a[0][0])
		return 0;
	for (int i = 1; i < 5; i++)
	{
		if (a[0][i] < a[0][i-1])
		{
			return 0;
		}
		if (a[1][i] < a[1][i-1])
		{
			return 0;
		}
		if (a[1][i] < a[0][i])
		{
			return 0;
		}
	}
	return 1;
}
void DFS(int num)
{
	if (num == 10)
	{
		if (check())
		{
			cou++;
		}
		return;
	}
	for (int i = 1; i <= 10; i++)
	{
		if (flag[i] == 0)
		{
			flag[i] = 1;
			a[num / 5][num % 5] = i;
			DFS(num + 1);
			flag[i] = 0;
		}
	}
}
 
int main()
{
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			a[i][j] = 0;
		}
	}
        for (int i = 0; i < 10; i++)
	{
		flag[i] = 0;
	}
	DFS(0);
	printf("%d\n", cou);
}

难度:5

1 计算四则运算表达式的值。输入一个正确四则运算表达式字符串,表达式正确则输出计算结果,错误则给出提示。

在这里插入代码片

2 对n个不等长的字符串进行字典顺序排序,各字符串长度存放在数组len中 sort_str( char* str[], int len[], int n )

//这里我们引用了string.h库里的比较函数strcmp()和复制函数strpy()
#include<stdio.h>
#include<string.h>
int main()
{
    char a[201][201];//首先我们建立一个存放输入字符串的二维数组
    char b[201];//再建立一个临时存放字符串的数组
    int n;
    scanf("%d",&n);//n个字符串
    for(int i=0;i<n;i++)
        scanf("%s",a[i]);//实际上,二维数组的每一行存放一个字符串
    for(int i=0;i<n;i++)//控制行数,从第一行开始
    for(int j=i+1;j<n;j++)//从i的下一行开始
    {
        if(strcmp(a[i],a[j])>0)//不断比较前一个与后一个
        {//如果前一个字符的ASCII码大于后一个则交换位置
        //这个则由strcmp的值来反应,如果前一个元素大于后一个元素
        //则返回值1,如果相等返回值0,如果小于,返回值-1
            strcpy(b,a[i]);//利用临时数组存放字符串
            strcpy(a[i],a[j]);//将括号里的第二个元素赋给第一个元素
            strcpy(a[j],b);//结果是后一个与前一个交换
        }
    }
    for(int i=0;i<n;i++)
    {
        printf("%s\n",a[i]);//将每一行的字符串打印出来
    }
}


3 0-1背包问题。假设你有一个背包,最多能承重C千克,这里有k个物品,其重量分别为w1、w2、……、wk,在背包所能承受的重量下,尽可能得使背包里的物品重量最大。

void bag( int ball[], int n, int w)

//0-1背包问题 
#include<bits/stdc++.h>

using namespace std;

const int MAXN = 1005;
int f[MAXN];  // 

int main() 
{
    int n, m;   
    cin >> n >> m;

    for(int i = 1; i <= n; i++) {
        int v, w;
        cin >> v >> w;      // 边输入边处理
        for(int j = m; j >= v; j--)
            f[j] = max(f[j], f[j - v] + w);
    }

    cout << f[m] << endl;

    return 0;
}


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

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

相关文章

如何制作一张标准地图样式的地图(附数据)

概述 大家有没有想过这样一个问题&#xff0c;我们在标准地图网站上看到的标准地图的样式&#xff08;形状&#xff09;和我们平时用到的地图不一样&#xff0c;那么是什么原因导致的呢&#xff0c;我们能够制作这样样式&#xff08;形状&#xff09;的标准地图吗&#xff0c;…

Tableau可视化设计案例-04标靶图、甘特图、瀑布图

文章目录Tableau可视化设计案例04标靶图、甘特图、瀑布图1.标靶图1.1二月份电量销售额完成情况1.2参考线与参考区间2.甘特图2.1甘特图的概念与用途2.2交货延期情况的甘特图2.3不同的日期类型选择3.创建超市不同子类别产品的盈亏瀑布图Tableau可视化设计案例 本文是Tableau的案…

手把手转行|你真的要转行吗?

首先&#xff0c;我不鼓励盲目转行。 但凡你还有选择的机会&#xff0c;转行&#xff0c;都不是你的第一选择。 如果你是为了逃避而转行&#xff0c;那多半会以失败告终。 原因是&#xff0c;你现在想要逃避的问题&#xff0c;当前不解决&#xff0c;换一家公司&#xff0c;也要…

现在学编程,只要开始行动都不晚

我要告诉大家的是&#xff0c;学习编程&#xff0c;任何时候都不晚。 咱们首先说工资&#xff0c;我一直认为&#xff0c;不看工资的岗位纯属耍流氓。如果你关注每年的薪资排行榜&#xff0c;金融和 IT 行业连续多年稳居前二&#xff0c;而比较有意思的是&#xff0c;哪怕薪资…

C++ Primer 第二章 变量和基本类型

C Primer 第二章 变量和基本类型2.1. Primitive Built-in Types2.1.1. Arithmetic Types2.1.3. Literals2.2 Variables2.2.1. Variable DefinitionsInitializersList InitializationDefault Initialization2.2.2. Variable Declarations and Definitions2.2.3. Identifiers2.3.…

set系列集合、collection集合的总结

无序 不重复 无索引 HashSet 元素无序的底层原理&#xff1a;哈希表&#xff1a; JDk1.7之前&#xff1a; JDK1.8之后&#xff1a; 总结&#xff1a; HashSet 元素去重复的底层原理&#xff1a; 因为传入的参数值一样&#xff0c;所以重写之后的hashcode方法所给出的哈希值是…

开科唯识冲刺创业板:年营收3.7亿 红杉奕信是二股东

雷递网 雷建平 12月19日北京开科唯识技术股份有限公司&#xff08;简称&#xff1a;“开科唯识”&#xff09;日前递交招股书&#xff0c;准备在深交所创业板上市。开科唯识计划募资8亿元&#xff0c;其中&#xff0c;3.19亿用于开科唯识智能财富管理及投研一体化平台建设项目&…

怎样使用Odoo 16 实现多公司管理

专业人士面临的最具挑战性的任务之一是在同一系统内管理多家公司。我们希望在浏览产品时不从一家公司切换到另一家公司。母公司下各公司的集中管理制定了多公司方法。一个组织由多个地点的分支机构组成&#xff0c;而母公司管理他分支机构的产品列表。母公司的每个分支机构都使…

[附源码]Python计算机毕业设计Django医院挂号住院管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

后端必知:遵循Google Java规范并引入checkstyle检查

IDEA配置Code Style 协同工作时&#xff0c;为了保证统一的代码风格&#xff0c;要求我们使用的规范&#xff0c;如果大家都用的是 IDEA&#xff0c;则推荐使用 Google Code Style&#xff0c;推荐阅读Google Java 编程风格中文文档。 先下载配置文件&#xff1a;github.com/…

牛客竞赛每日俩题 - Day10

目录 输入输出的细节 函数find&#xff08;&#xff09;的用法 输入输出的细节 收件人列表__牛客网 细节一&#xff1a;当输入转行后又要使用getline&#xff08;&#xff09;时&#xff0c;必须先使用getchar&#xff08;&#xff09;吃掉前面的转行符\n;细节二&#xff1a…

介绍一个助你事半功倍的数据挖掘神器!!

在Pandas模块当中&#xff0c;对于表格数据的分组操作&#xff08;groupby&#xff09;和透视表&#xff08;pivot_table&#xff09;的制作一直都是比较常见的&#xff0c;今天小编为大家分享一个数据分析的利器&#xff0c;能够自动为我们完成上述提到的一系列操作&#xff0…

arcgis读取NetCDF格式的数据(c#读取数据)

项目里面要用到降雨的数据&#xff0c;正好是.NC格式的&#xff0c;以前也没用过&#xff0c;正好记录下&#xff0c;大家也可以参考下&#xff0c;首先是arcgis是如何处理NC数据的&#xff0c;在arcgis软件里面有个多维工具箱&#xff0c;我用的是汉化版本的&#xff0c;英文版…

[附源码]计算机毕业设计Python的剧本杀管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

Verilog 简易单周期CPU

目录 本实验包含&#xff1a; 简易结构图&#xff1a; 各部件代码或实现&#xff1a; 控制器&#xff1a; 寄存器堆&#xff1a; ALU&#xff1a; 数据存储器&#xff1a; 指令存储器&#xff1a; CPU&#xff1a; tp&#xff08;仿真文件&#xff09;&#xff1a; 仿真…

如何去掉idea的诸多警告

File->setting->Editor->inspections 选择漏斗&#xff0c;选中warning&#xff0c;筛选出所有警告级别&#xff0c;然后去掉勾选&#xff0c;然后重启idea即可

重构物理Entity架构,支持更多的形状

上一节实战如何编译BEPUphysicsint源码到自己的项目, 如何整合物理引擎与Unity图形渲染。本节来从新调整设计,让物理的Entity基本操作与物理的形状分离,支持更多的物理形状,支持物理entity与Unity物体位移与旋转同步。主要分成以下3个部分: 1: 设计PhyBaseEntity&#xff0c;让…

学到一招!PyCharm连接MySQL竟如此简单!

在 PyCharm 中是可以通过内置的工具来连接、操作数据库的&#xff0c;并且对于市面上大多数主流数据库都是支持的。 连接 MySQL 首先打开 PyCharm &#xff0c;点击菜单栏的 View --> Tool Windows --> Database 或者直接点击 PyCharm 右侧的 Database 然后就会在 PyCh…

【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.6 矩形、圆角矩形

本节对应的视频讲解&#xff1a;B_站_视_频 https://www.bilibili.com/video/BV1mg411J7u5 本节讲解如何绘制矩形、圆角矩形 1. 相关的 API 直接查看官方的帮助文档&#xff0c;可以看到有多个重载的方法用于绘制矩形、圆角矩形 1.1 矩形 // 带 F 表示参数为浮点数&#x…

【电商】电商系统---合同管理

说一下合同管理部分&#xff0c;希望对大家有帮助&#xff0c;如果大家觉得简单可以直接略过&#xff0c;谢谢&#xff01; 合同分类 合同主要分为采购类合同、销售类合同、其他合同。 采购合同和销售合同分别与采购订单和销售订单建立对应关系&#xff0c;通过采购订单和销售…