2024年7月23日
1.图的5中存储方式
2.二叉树的先序,中序,后序遍历。
学了图的存储方式之后,二叉树好像就是小菜一碟一样。注意一下名词的顺序就可以了。
所谓先中后序,就是先根,中根,后根的差别。没有其他的了。
3.高精度--除法
4.高精度---乘法
5.stl中的vector清空,并且重新赋值和一定的空间大小的方式
d = vector<ll>();
d.resize(N*2,0);
6.利用余子式计算行列式(前者是c语言数组版本,后者是c++vector版本)
int DET(int arr1[MAX][MAX], int n);
int Minor(int arr1[MAX][MAX],int i,int n);
int DET(int arr1[MAX][MAX], int n)//行列式
{int i, M, sum = 0;//i是第一行的列指标,M是余子式的值,sum是行列式的计算值if (n == 1)//一阶行列式直接得出结果return arr1[0][0];else if (n > 1){for (i = 0; i < n; i++)//按第一行展开{M = Minor(arr1, i, n);sum += pow(-1, i + 2) * arr1[0][i] * M;}}return sum;
}int Minor(int arr1[MAX][MAX],int i,int n)//利用代数余子式计算行列式
{//构造余子式的函数 minor,本行本列不取就构造成功了***********这是重点,这是重点******************int j, k;int arr2[MAX][MAX];//以下为构造余子式的过程。由于C语言的特性,这个过程会比较复杂,需要观察余子式与原行列式的关系。for (j = 0; j < n - 1; j++)//行指针{for (k = 0; k < n - 1; k++)//列指针{if (k < i)arr2[j][k] = arr1[j + 1][k];else if (k >= i)arr2[j][k] = arr1[j + 1][k + 1];}}return DET(arr2, n - 1);//构造完后,余子式是一个新的行列式,返回DET函数进行计算。
}
ll Det(vector<vector<ll>> a,ll n);
ll Minor(vector<vector<ll>> a,ll i,ll n);
ll Minor(vector<vector<ll>> a, ll i, ll n)//余子项的构建
{vector<vector<ll>> b(10,vector<ll>(10,0));for(int j = 1; j <= n-1; ++ j){for(int k = 1; k <= n-1; ++ k){if(k < i)b[j][k] = a[j+1][k];//是不是非常奇怪每次为什么j从一开始可以得出答案呢,答案在最后的returnelseb[j][k] = a[j+1][k+1];}}return Det(b,n-1);
}
ll Det(vector<vector<ll>> a,ll n)
{if(n==1)return a[1][1];else{ll sum = 0 ;for(int i = 1; i <= n; ++ i){ll M = Minor(a,i,n);sum += pow(-1,i+1)*M*a[1][i];}return sum;}
}
7.高精度减法
8.用python和java秒杀高精度
python
a = input()
b = input()
pirnt(int(a)-int(b))#其他写法一样,就不写了
java(加法a.add(b),减法a.subtracct(b) ,乘法a.multiply(b) , 除法a.divide(b))
import java.math.BigInteger;//导入BigInterger类库,使用biginteger用用到
import java.util.Scanner;//导入scanner类库,输入东西用到public class BigIntegerDemo {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入第一个数:");String num1Str = scanner.nextLine();System.out.println("请输入第二个数:");String num2Str = scanner.nextLine();// 创建两个BigInteger对象BigInteger num1 = new BigInteger(num1Str);BigInteger num2 = new BigInteger(num2Str);// 加法BigInteger sum = num1.add(num2);System.out.println("加法结果: " + sum);// 减法BigInteger difference = num1.subtract(num2);System.out.println("减法结果: " + difference);// 乘法BigInteger product = num1.multiply(num2);System.out.println("乘法结果: " + product);// 除法BigInteger quotient = num1.divide(num2);System.out.println("除法结果: " + quotient);}
}