Set

Basis

Definition

  • 外延公理
  • 空集存在公理
  • 无序对公理
  • 并集公理
  • 幂集公理
  • 无穷公理
  • 替换公理
  • 正则公理 (以上为ZF公理化集合论)
  • 选择公理 (以上为ZFC公理化集合论)

若a是集合A中的元素,则成a属于A,记为\(s\in A\)

阅读全文 »

命题逻辑

命题

数理逻辑研究的中心问题是推理,而推理的前提和结论都是命题,因而命题是推理的基本单位

Definition

具有确切真值的陈述句成为命题(proposition)。该命题可以取一个值,称为真值。真值只有“真”和“假”两种,分别用“T”(1)或者“F”(0)表示。

一切没有判断的句子,图命令句(祈使句)、感叹句、疑问句、二义性的陈述句等都不能作为命题

阅读全文 »

谓词逻辑

谓词

Definition

在原子命题中,可以独立存在的客体(句子中的主语、宾语等),成为个体词。而用以刻画客体的心智或者客体之间关系即为谓词。

个体词

Definition

个体词可分为两种,个体常量和个体变量,均在个体域内取值。

  1. 表示具体或特定的个体词成为个体常量。一般用带或不带下标的小写英文字母\(a,b,c,\cdots,a_1,b_1,c_1,\cdots\)等表示
  2. 表示抽象或泛指的个体词成为个体变量。一般用带或不带下标的小写英文字母\(x,y,z,\cdots,x_1,y_1,z_1,\cdots\)等表示
  3. 个体词的取值范围称为取值域(或论域),常用D表示
  4. 宇宙间的所有个体域聚集在一起所构成的个体域成为全总个体域。若如特别说明,均使用全总个体域
阅读全文 »

二元关系

序偶和笛卡尔积

有序组

Definition

由两个元素按照一定的次序组成的二元组成为序偶,记作<x,y>,其中x是第一元素,y是第二元素。

tips:

由定义可知,两个序偶<a,b>=<c,d>当且仅当a=c,b=d

笛卡尔积

阅读全文 »

sqrt{3}是无理数​

反证法

假设\(\sqrt{3}\)是有理数。

根据有理数定义,存在\(m,n\in \mathbb{N^+}\),使得\(\sqrt{3}=\frac{m}{n},gcd(m,n)=1\)

其中m,n互质,即\(gcd(m,n)=1\)

将上述等式平方得到\(3n^2=m^2\)

由于3是素数,得到m是3的倍数,即假设\(m=3k,k\in \mathbb{N^+}\)

代入原先等式,\(3n^2=m^2=9k^2\),即\(n^2=3k^2\)

同样道理,得到n也是3的倍数,与gcd(m,n)=1矛盾。QED

任取素数开平方是无理数

\[ 证明\sqrt{x}是无理数,x为任意素数\\\\ 假设\sqrt{x}是有理数,存在m,n\in \mathbb{N^+}使得\sqrt{x}=\frac{m}{n},gcd(m,n)=1\\\\ \sqrt{x}n=m\\\\ \Rightarrow xn^2=m^2\\\\ \Rightarrow m为x的倍数,令m=xt\\\\ \Rightarrow n^2=xt^2\\\\ \Rightarrow n为x的倍数,则\sqrt{x}为无理数 \]

阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
//冒泡 每次会确定一个数字的最终位置
void sort_bubble(int *a){
int i,j;
for(i=n-1;i>0;i--){
for(j=0;j<i;j++){
if(a[j]>a[j+1]){//改成<变成递减
swap(a[j],a[j+1]);
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
//选择排序 一次循环找到一个当前未排序序列的最大(最小)值,放到队列首位(或末尾)
void sort_select(int *a){
int i,j,min_pos;
for(i=0;i<n-1;i++){
min_pos=i;
for(j=i+1;j<n;j++){//找未排序序列最小值
if(a[min_pos]>a[j]){
min_pos=j;
}
}
swap(a[i],a[min_pos]);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//插入排序,类比打扑克洗牌,注意把未排序数字插入合适位置
void sort_insert(int *a){
int i,j,k,insert_val;
for(i=1;i<n;i++){
for(j=0;j<i;j++){
if(a[i]<a[j]){
insert_val=a[i];
for(k=i-1;k>=j;k--){//元素后移
a[k+1]=a[k];
}
a[j]=insert_val;
break;
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//快速排序 以一个数为锚点分为两部分,递归到每组一个元素
int partition(int *a,int left,int right){//以该部分数组最后一个数为锚点
int i,k=left;
for(i=left;i<right;i++){
if(a[i]<a[right]){
swap(a[k],a[i]);
k++;
}
}
swap(a[right],a[k]);
return k;
}
int sort_quick(int *a,int left,int right){
int pivot;
if(left<right){
pivot=partition(a,left,right);
sort_quick(a,left,pivot-1);
sort_quick(a,pivot,right);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//堆排
void heap_max(int *a,int start,int end){
int dad=start;
int son=2*dad+1;
while(son<end){
if(son+1<end&&a[son]<a[son+1]) son++;
if(a[dad]<a[son]){
swap(a[dad],a[son]);
dad=son;
son=dad*2+1;
}
}
}
void arr_heap(int *a){
int i;
for(i=n/2-1;i>0;i--){
heap_max(a,i,n);
}
swap(a[0],a[n-1]);//把最大值放到最后
for(i=N-1;i>1;i--){//由于除了根节点,其他节点都没有改变,所以只需要对根节点进行一个排序即可
heap_max(a,0,i);
swap(a[0],a[i-1]);
}
}
阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
12
13
//malloc C里没有new
char* t=(char*)malloc(n*sizeof(char));
free(t);
//二维数组传参用指针,必须要写列数
void print(int p[][4],int row){
int i,j;
for(i=0;i<row;i++){
for(j=0;j<sizeof(*p)/sizeof(int);j++){
printf("%d",p[i][j]);
}
printf("\n");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//二级指针实现数据排序,不改变源数据
#include<stdio.h>
#include<stdlib.h>
#inclued<string.h>

void print(char **p){ //char *p[]
for(int i=0;i<5;i++){
puts(p[i]);
}
}

int main(){
char *p[5];
char b[5][10]={"l","w","hh","mm","tt"};
int i,j,tmp;
char *t;
char **p2;
for(i=0;i<5;i++){
p[i]=b[i];
}
for(i=4;i>0;i--){
for(j=0;j<i;j++){
if(strcmp(p2[j],p2[j+1])==1){
t=p2[j];
p2[j]=p2[j+1];
p2[j+1]=t;
}
}
}
print(p2);
for(i=0;i<5;i++){
puts(b[i]);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//函数指针
#include<stdio.h>
#include<stdlib.h>

void b(){
printf("fun b\n");
}

void a(void (*p)()){
p();
}

int main(){
void (*p)();//函数指针
p=b;
a(p);//相当于执行p函数
return 0;
}
1
2
extern int k;//借用main.c文件的全局变量k
static int i;//只能在本文件中使用,static也可以修饰函数
1
2
3
4
5
6
7
8
9
//递归 Hanoi
void hanoi(int n,int a,int b,int c){
if(n==1) printf("%c->%c\n",a,c);
else{
hanoi(n-1,a,c,b); //把n-1个盘子从a通过c移动到b
printf("%c->%c\n",a,c);//把a的最后一个盘子移动c
hanoi(n-1,b,a,c);//把n-1个盘子从b通过a移动到c
}
}
阅读全文 »

Python

mysql库

1
pip install pymysql

正则re.S与rs.M

本来呢: ^只匹配字符串的开头,$只匹配字符串结尾,.不匹配换行符. re.S做的事情是: 让.也匹配换行符 re.M做的事情是: 让^匹配每行的开头,$匹配每行的结尾

阅读全文 »

UnblockNeteaseMusic 部署

https://github.com/nondanee/UnblockNeteaseMusic

node.js

下载发行包,把bin下面的三个命令软连接/usr/bin即可

unblockneteasemusic

阅读全文 »

题目

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3. Example 2:

Input: "bbbbb" Output: 1 Explanation: The answer is "b", with the length of 1. Example 3:

阅读全文 »
0%