diff --git a/liuxin/liuxinclevel1/p01_runningLetter.c b/liuxin/liuxinclevel1/p01_runningLetter.c new file mode 100644 index 00000000..a8ea25d0 --- /dev/null +++ b/liuxin/liuxinclevel1/p01_runningLetter.c @@ -0,0 +1,29 @@ +#include +#include +int main(){ + int i,j=0,k=1; + while (1) { + system("cls"); + for (i=1;i<=j;++i) { + putchar(' '); + } + printf("R\n"); + Sleep(100); + if (k) { + j++; + }else{ + j--; + } + if (j==79) { + k=0; + } + else if (j==0) { + k=1; + } + } + return 0; +} + +/* +Ugly format +*/ diff --git a/liuxin/liuxinclevel1/p02_isPrime.c b/liuxin/liuxinclevel1/p02_isPrime.c new file mode 100644 index 00000000..30741450 --- /dev/null +++ b/liuxin/liuxinclevel1/p02_isPrime.c @@ -0,0 +1,20 @@ +#include +#include +int main(){ + int n,i,j; + scanf("%d",&n); + for (i=2,j=1;i<=trunc(sqrt(n));++i) + if (n%i==0) { + j=0; break; + } + if (j&&n!=1) { + printf("YES\n"); + }else{ + printf("NO\n"); + } + return 0; +} + +/* +Ugly format +*/ diff --git a/liuxin/liuxinclevel1/p03_Diophantus.c b/liuxin/liuxinclevel1/p03_Diophantus.c new file mode 100644 index 00000000..226f7253 --- /dev/null +++ b/liuxin/liuxinclevel1/p03_Diophantus.c @@ -0,0 +1,17 @@ +#include +#include +const double INF=1e8,eps=1e-8; +int main(){ + double i=0,j; + while (i +int main(){ + int i,j,k; + for (i=1;i<=9;++i) + for (j=0;j<=9;++j) + for (k=0;k<=9;++k) + if (i*i*i+j*j*j+k*k*k==i*100+j*10+k) { + printf("%d%d%d\n",i,j,k); + } + + return 0; +} + +/* +Ugly format +*/ diff --git a/liuxin/liuxinclevel1/p05_allPrimes.c b/liuxin/liuxinclevel1/p05_allPrimes.c new file mode 100644 index 00000000..a1f01ad9 --- /dev/null +++ b/liuxin/liuxinclevel1/p05_allPrimes.c @@ -0,0 +1,31 @@ +#include +#include +#include +const int MAXN=10000005; +bool b[MAXN]; +int n,tot,prime[MAXN]; +void get_prime(int n); +int main(){ + scanf("%d",&n); + int tmp=clock(); + get_prime(n); + for (int i=1;i<=tot;++i) { + printf("%d\n",prime[i]); + } + printf("time=%d ms\n",clock()-tmp); + return 0; +} +void get_prime(int n) { + memset(b,0,sizeof(b)); tot=0; + for (int i=2;i<=n;++i) { + if (!b[i]) prime[++tot]=i; + for (int j=1;j<=tot&&prime[j]*i<=n;++j) { + b[prime[j]*i]=1; + if (i%prime[j]==0) break; + } + } +} + +/* +Ugly format +*/ diff --git a/liuxin/liuxinclevel1/p06_Goldbach.c b/liuxin/liuxinclevel1/p06_Goldbach.c new file mode 100644 index 00000000..28197448 --- /dev/null +++ b/liuxin/liuxinclevel1/p06_Goldbach.c @@ -0,0 +1,32 @@ +#include +#include +const int MAXN=10000005; +bool b[MAXN]; +int n,tot,prime[MAXN]; +void get_prime(int n); +int main(){ + get_prime(100); + int i,j,k; + for (i=4;i<=100;i+=2) { + for (j=1;j<=tot;++j) { + for (k=1;k<=tot;++k) if (prime[j]+prime[k]==i) break; + if (prime[j]+prime[k]==i) break; + } + printf("%d=%d+%d\n",i,prime[j],prime[k]); + } + return 0; +} +void get_prime(int n) { + memset(b,0,sizeof(b)); tot=0; + for (int i=2;i<=n;++i) { + if (!b[i]) prime[++tot]=i; + for (int j=1;j<=tot&&prime[j]*i<=n;++j) { + b[prime[j]*i]=1; + if (i%prime[j]==0) break; + } + } +} + +/* +Ugly format +*/ diff --git a/liuxin/liuxinclevel1/p07_decrypt_encrypt.c b/liuxin/liuxinclevel1/p07_decrypt_encrypt.c new file mode 100644 index 00000000..69a9bad1 --- /dev/null +++ b/liuxin/liuxinclevel1/p07_decrypt_encrypt.c @@ -0,0 +1,64 @@ +#include +#include +typedef long long LL; +const int MAXN=100005; +char s[MAXN]; +LL m,n,p,q,e1,e2,a[MAXN]; +LL mul(LL a,LL b,LL c){ + LL ans=0; a%=c; + while (b){ + if (b&1) { + ans=ans+a; + if (ans>=c) ans-=c; + } + a=a+a; b>>=1; + if (a>=c) a-=c; + } + return ans; +} +LL power(LL a,LL b,LL c){ + LL ans=1; + while (b){ + if (b&1) ans=mul(ans,a,c); + a=mul(a,a,c); b>>=1; + } + return ans; +} +LL next_prime(LL x) { + int i,j; + while (1) { + for (i=2,j=1;i*i<=x;++i) if (x%i==0) { j=0; break; } + if (j==1) { return x; break; } + x++; + } +} +LL gcd(LL x,LL y){ return y==0?x:gcd(y,x%y); } +LL extend_gcd(LL a,LL b,LL &x,LL &y) { + if (b==0) { x=1; y=0; return a; } + else { + int tmp=extend_gcd(b,a%b,y,x); + y-=x*(a/b); return tmp; + } +} +void test(){ + p=next_prime(102567192LL); + q=next_prime(186127350LL); + n=p*q; + printf("%lld %lld %lld\n",p,q,n); + for (LL i=10;i;++i) if (gcd(i,(p-1)*(q-1))==1) { e1=i; break; } + extend_gcd(e1,(p-1)*(q-1),e2,m); + e2=(e2%((p-1)*(q-1))+(p-1)*(q-1))%((p-1)*(q-1)); + printf("%lld %lld\n",e1,e2); +} +//102567211 186127387 19090566975307657 11 17355060624193691 +int main(){ + int i; //test(); + p=102567211LL; q=186127387LL; n=19090566975307657LL; e1=11LL; e2=17355060624193691LL; + while (scanf("%s",s)!=EOF) { + m=strlen(s); + for (i=0;i +void work(int n,int x,int y,int z); +int main(){ + int n; + scanf("%d",&n); + work(n,0,1,2); + return 0; +} +void work(int n,int x,int y,int z){ + if (n==0) return; + work(n-1,x,z,y); + printf("%c --> %c\n",x+'a',z+'a'); + work(n-1,y,x,z); +} +//Nice! \ No newline at end of file diff --git a/liuxin/liuxinclevel1/p09_maze.c b/liuxin/liuxinclevel1/p09_maze.c new file mode 100644 index 00000000..b7de6e48 --- /dev/null +++ b/liuxin/liuxinclevel1/p09_maze.c @@ -0,0 +1,109 @@ +#include +#include +#include +#include +#include +typedef long long LL; +inline int read(){ + int x=0,f=1; char ch=getchar(); + while (ch<'0'||ch>'9') { if (ch=='-') f=-1; ch=getchar(); } + while (ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } + return x*f; +} + +const int MAXN=22; +int n,m,x,y,p,q,a[MAXN][MAXN]; +int rand(int n); +int main(){ + int i,j,k; + srand(time(0)); + printf("Please input the length and the width:\n"); + n=read(); m=read(); + memset(a,0,sizeof(a)); + for (i=1;i<=n*m/2;++i) { j=rand(n); k=rand(m); a[j][k]=1; } + system("cls"); + for (i=n;i;--i) { + for (j=m;j;--j) if (!a[i][j]) break; + if (!a[i][j]) break; + } + a[i][j]=2; x=i; y=j; + for (i=1;i<=n;++i) { + for (j=1;j<=m;++j) if (!a[i][j]) break; + if (!a[i][j]) break; + } + a[i][j]=3; p=i; q=j; + for (i=1;i<=n;++i) { + for (j=1;j<=m;++j) + switch (a[i][j]) { + case 0:printf(" "); break; + case 1:printf("*"); break; + case 2:printf("U"); break; + case 3:printf("G"); break; + } + puts(""); + } + printf("U:your position\n"); + printf("G:your goal\n"); + for (k=1;;++k) { + char ch=getch(); + a[p][q]=0; + switch (ch) { + case 75:{ + if (y>1&&!a[x][y-1]) { + a[x][y]=0; + a[x][--y]=2; + } + break; + } + case 77:{ + if (y1&&!a[x-1][y]) { + a[x][y]=0; + a[--x][y]=2; + } + break; + } + case 80:{ + if (x +#include +#include +#include +#include +#include +#include + +const int MAXN=202; +const int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; +int n,m,tot,goal[MAXN][2],map[MAXN][MAXN]; +void loading(); +void working(); +int main(){ + loading(); + working(); + return 0; +} +void loading(){ + FILE *f; + FIRST: + char s[MAXN],ch; + printf("Please input the data file name:"); + scanf("%s",s); + if ((f=fopen(s,"r"))!=NULL) printf("Ok!\n"); + else { + printf("Oh no!!\n"); + Sleep(3000); + goto FIRST; + } + fscanf(f,"%d%d",&n,&m); fscanf(f,"%c",&ch); + for (int i=1;i<=n;fscanf(f,"%c",&ch),++i) + for (int j=1;j<=m;++j) { + fscanf(f,"%c",&ch); + switch (ch) { + case '.':map[i][j]=0;break; + case 'U':map[i][j]=1;break; + case 'x':map[i][j]=2;break; + case '#':map[i][j]=3;break; + case 'o':map[i][j]=4;break; + } + } + fclose(f); +} +void working(){ + int i,j,k,x,y,num=0; + for (i=1;i<=n;++i) + for (j=1;j<=m;++j) + if (map[i][j]==2) { + ++tot; + goal[tot][0]=i; + goal[tot][1]=j; + } + for (i=0;i<=n+1;++i) map[i][0]=map[i][m+1]=3; + for (j=0;j<=m+1;++j) map[0][j]=map[n+1][j]=3; + for (i=1;i<=n;++i) { + for (j=1;j<=m;++j) + if (map[i][j]==1) { x=i; y=j; break; } + if (map[i][j]==1) break; + } + while (1) { + system("cls"); + for (i=1;i<=n;++i) { + for (j=1;j<=m;++j) + switch (map[i][j]) { + case 0:printf(".");break; + case 1:printf("U");break; + case 2:printf("x");break; + case 3:printf("#");break; + case 4:printf("o");break; + } + printf("\n"); + } + printf("w:up\ns:down\na:left\nd:right\nx:exit\n"); + for (i=1;i<=tot;++i) + if (map[goal[i][0]][goal[i][1]]==0) map[goal[i][0]][goal[i][1]]=2; + for (i=1,j=0;i<=tot;++i) + if (map[goal[i][0]][goal[i][1]]==4) j++; + if (tot==j) { + printf("U win!!!!!\n"); + return; + } + READAGAIN: + char ch=getch(); + num++; + if (num==100) { + printf("U lose!!!!!\n"); + return; + } + switch (ch) { + case 's':k=0;break; + case 'd':k=1;break; + case 'w':k=2;break; + case 'a':k=3;break; + case 'x':break; + default:goto READAGAIN; + } + if (ch=='x') return; + int xx=x+dir[k][0],yy=y+dir[k][1]; + if (map[xx][yy]<4) { + if (map[xx][yy]!=3) { + map[xx][yy]=1; + map[x][y]=0; + x=xx; y=yy; + } + } + else { + int x2=xx+dir[k][0],y2=yy+dir[k][1]; + if (map[x2][y2]<3) { + map[x2][y2]=4; + map[xx][yy]=1; + map[x][y]=0; + x=xx; y=yy; + } + } + } +} + +/* +Ugly format!!! + +*/ diff --git a/liuxin/liuxinclevel1/p11_linkedList.c b/liuxin/liuxinclevel1/p11_linkedList.c new file mode 100644 index 00000000..a05acfd8 --- /dev/null +++ b/liuxin/liuxinclevel1/p11_linkedList.c @@ -0,0 +1,103 @@ +#include +#include +#include +typedef long long LL; +inline int read() { + int x=0,f=1; char ch=getchar(); + while (ch<'0'||ch>'9') { if (ch=='-') f=-1; ch=getchar(); } + while (ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } + return x*f; +} + +const int MAXN=200005; +int n,m,l; +struct node{ + int x; + node* next; + node(int xx=0):x(xx){} +}; +int main(){ + printf("Please input the total number of the link list you want to create!\n"); + n=read(); + node *head=NULL,*tail=NULL; + for (int i=1;i<=n;++i) { + int k=read(); + node* p=new node(k); + p->next=NULL; + if (head==NULL) head=p; + if (tail!=NULL) tail->next=p; + tail=p; + } + printf("Thanks\nPlease input the operation number\n"); + printf("1. 继续加一个元素k\n"); + printf("2. 遍历该链表,依次现实各节点的value\n"); + printf("3. 将该链表所有节点反序\n"); + printf("4. 在该链表中查找第一个值为k的节点,如果找到则返回该节点的序号,否则返回-1\n"); + printf("5. 查找下一个值为k的节点,返回值同上\n"); + printf("6. 结束程序\n"); + node *q,*p,*stack[MAXN]; + while (1) { + int k=read(); + switch (k) { + case 1:{ + p=new node(read()); + p->next=NULL; + if (head==NULL) head=p; + if (tail!=NULL) tail->next=p; + tail=p; n++; + break; + } + case 2:{ + for (p=head;p!=NULL;p=p->next) printf("%d ",p->x); + printf("\ntot=%d\n",n); + break; + } + case 3:{ + for (p=head,m=0;p!=NULL;p=p->next) stack[++m]=p; + tail=head=NULL; + for (int i=m;i;--i) { + p=stack[i]; + if (head==NULL) head=p; + if (tail!=NULL) tail->next=p; + tail=p; + } + tail->next=NULL; + for (p=head;p!=NULL;p=p->next) printf("%d ",p->x); + printf("\ntot=%d\n",n); + break; + } + case 4:{ + m=read(); l=1; + for (q=head;q!=NULL;l++,q=q->next) if (q->x==m) break; + if (q==NULL) printf("-1\n"); else printf("%d\n",l); + break; + } + case 5:{ + if (q==NULL) { + printf("-1\n"); + break; + } + for (q=q->next;q!=NULL;l++,q=q->next) if (q->x==m) break; + if (q==NULL) printf("-1\n"); else printf("%d\n",l); + break; + } + case 6:{ + for (p=head;p!=NULL;p=tail) tail=p->next,delete p; + head=tail=p=q=NULL; + return 0; + } + } + } + + return 0; +} + +/* +### 题目:单向链表 +### 功能要求: +1. 在main函数中创建一个单向链表; +2. 遍历该链表,依次现实各节点的value; +3. 将该链表所有节点反序; +4. 在该链表中查找第一个值为5的节点,如果找到则返回该节点的序号,否则返回-1; +5. 查找下一个值为5的节点,返回值同上; +*/ diff --git a/liuxin/liuxinclevel1/p12_warehouse.c b/liuxin/liuxinclevel1/p12_warehouse.c new file mode 100644 index 00000000..f50c3d56 --- /dev/null +++ b/liuxin/liuxinclevel1/p12_warehouse.c @@ -0,0 +1,95 @@ +#include +#include +#include +#include +#include + +const int MAXN=200005; +int n,m,v[MAXN]; +struct Data{ + int num; + char name[20]; +}goods[MAXN],tmp[MAXN]; + +void loading(); +void saving(); +void working(); +int main(){ + loading(); + working(); + saving(); + return 0; +} +void loading(){ + FILE *f=fopen("data.txt","r"); + if (f==NULL) { + printf("Oh,no!!!\n"); + n=0; + } + else { + fscanf(f,"%d",&n); + for (int i=1;i<=n;++i) { + fscanf(f,"%s %d",goods[i].name,&goods[i].num); + } + } + fclose(f); +} +void saving(){ + FILE *f=fopen("data.txt","w"); + fprintf(f,"%d\n",n); + for (int i=1;i<=n;++i) { + fprintf(f,"%s %d\n",goods[i].name,goods[i].num); + } + fclose(f); +} +void working(){ + while (1) { + system("cls"); + printf("1 show list\n"); + printf("2 in\n"); + printf("3 out\n"); + printf("4 exit\n"); + READAGAIN: + char ch=getch(); + if (ch<'1'||ch>'6') goto READAGAIN; + int i,j,k=ch-'0'; + if (k==1) { + for (i=1;i<=n;++i) { + printf("%d:%s %d\n",i,goods[i].name,goods[i].num); + } + Sleep(5000); + } + if (k==2) { + printf("Please input some goods:\n"); + scanf("%d",&m); getchar(); + for (i=n+1;i<=n+m;++i) { + scanf("%s %d",goods[i].name,&goods[i].num); + getchar(); + } + n+=m; + } + if (k==3) { + printf("Please input some goods:\n"); + scanf("%d",&m); + for (i=1;i<=n;++i) { + v[i]=0; + } + while (m--) { + scanf("%d",&j); + v[j]=1; + } + for (i=1,j=0;i<=n;++i) + if (!v[i]) { + tmp[++j]=goods[i]; + } + for (i=1,n=j;i<=n;++i) { + goods[i]=tmp[i]; + } + } + if (k==4) break; + } +} + +/* +Ugly format!!! +*/ diff --git a/liuxin/liuxincpplevel1/p01_Queue/Queue.cpp b/liuxin/liuxincpplevel1/p01_Queue/Queue.cpp new file mode 100644 index 00000000..3669033e --- /dev/null +++ b/liuxin/liuxincpplevel1/p01_Queue/Queue.cpp @@ -0,0 +1,47 @@ +#include +#include +using namespace std; +#include "Queue.h" + +Queue::Queue(int x){ + element=new int[x+1]; + len=x+1; +} +Queue::~Queue(){ + delete[] element; +} + +void Queue::clear(){ + head=tail=0; +} + +void Queue::append(int x){ + //cout< +#include +using namespace std; +#include "Queue.h" +#define FOR(i,a,b) for (int i=(a);i<=(b);++i) +#define ROF(i,b,a) for (int i=(b);i>=(a);--i) + +/* run this program using the console pauser or add your own getch, system("pause") or input loop */ + +int main(int argc, char** argv) { + int n,m,x; + while(1){ + cin>>n; + Queue S(n); + S.clear(); + cout<<"IsEmpty:"<>n; + FOR(i,1,n) { + cin>>x; + if (!S.IsFull()) S.append(x); + } + cout<<"IsEmpty:"<>m; + FOR(i,1,m) { + if (S.IsEmpty()) break; + cout< +#include +#include "Stack.h" + +Stack::Stack(int x){ + tot=0; + element=new int[num=x]; +} + +Stack::~Stack(){ + delete[] element; +} + +void Stack::push(int x){ + if (tot==num) { + std::cerr<<"Full!!Can't add anymore!\n"< +#include +using namespace std; +#include "Stack.h" + +/* run this program using the console pauser or add your own getch, system("pause") or input loop */ + +int main(int argc, char** argv) { + int i,j,k,n; + cin>>n; + Stack S(n); + cin>>n; + for (i=1;i<=n;++i) { + cin>>k; + if (!S.IsFull()) S.push(k); + } + cout<<"IsFull:"< +#include +#include +#include "SafeArray.h" + +SafeArray::SafeArray(int x){ + tot=x; + element=new int[x]; +} + +SafeArray::~SafeArray(){ + delete[] element; +} + +int& SafeArray::operator [](int x){ + if (x<1||x>=tot) { + std::cerr<<"RunTimeError!"< +#include +#include "SafeArray.h" + +/* run this program using the console pauser or add your own getch, system("pause") or input loop */ + +int main(int argc, char** argv) { + int n,m,i,j,k,l; + scanf("%d",&n); + SafeArray A(n+1); + for (i=1;i<=n;++i) { + scanf("%d",&A[i]); + } + scanf("%d",&m); + for (i=0;i +#include +#include +using namespace std; +#include "Student.h" +#include "Class.h" + +Class::Class(char *a,char *b){ + memcpy(name,a,strlen(a)); + memcpy(description,b,strlen(b)); +} + +void Class::write(){ + printf("%s:\n\t%s\n",name,description); +} + +int Class::Add(Student x){ + if (total==199) return -1; + s[++total]=x; + return 1; +} + +int Class::Delete(Student x){ + int i,j; + for (i=1,j=0;i<=total;++i) if (x==s[i]) { j=i; break; } + if (!j) return -1; + else { + for (i=j;i +#include +#include "Student.h" + +Student::Student(){ + score=0; +} +Student::Student(char *a,char *b){ + score=0; + memcpy(ID+1,a+1,strlen(a+1)); + memcpy(name+1,b+1,strlen(b+1)); +} + +void Student::write(){ + printf("%s %s %d\n",ID+1,name+1,score); +} + +bool Student::operator ==(const Student &x){ + if (strlen(ID)!=strlen(x.ID)) return 0; + else { + int i,len=strlen(ID); + for (i=1;i<=len;++i) if (ID[i]!=x.ID[i]) return 0; + return 1; + } +} diff --git a/liuxin/liuxincpplevel1/p04_cppScoreManagement/Student.h b/liuxin/liuxincpplevel1/p04_cppScoreManagement/Student.h new file mode 100644 index 00000000..fb15f4d4 --- /dev/null +++ b/liuxin/liuxincpplevel1/p04_cppScoreManagement/Student.h @@ -0,0 +1,15 @@ +#ifndef STUDENT_H +#define STUDENT_H + +class Student{ +private: + char ID[20],name[20]; +public: + int score; + Student(); + Student(char *a,char *b); + void write(); + bool operator ==(const Student &x); +}; + +#endif diff --git a/liuxin/liuxincpplevel1/p04_cppScoreManagement/ToDoList.md b/liuxin/liuxincpplevel1/p04_cppScoreManagement/ToDoList.md new file mode 100644 index 00000000..d2f0b58b --- /dev/null +++ b/liuxin/liuxincpplevel1/p04_cppScoreManagement/ToDoList.md @@ -0,0 +1,15 @@ +锘# To do list: + +## 1 鍒涘缓瀛︾敓绫伙紝鍖呭惈瀛︾敓淇℃伅 + +## 2 鍒涘缓璇剧▼绫伙紝鍖呭惈璇剧▼淇℃伅 + +### 3.1 璇剧▼澧炲姞鍔熻兘AddStudent + +### 3.2 璇剧▼澧炲姞鍔熻兘DeleteStudent + +### 3.3 璇剧▼澧炲姞鍔熻兘ShowList + +### 3.4 璇剧▼澧炲姞鍔熻兘InputScore + +## 4 main閲屽疄鐜版帶鍒跺彴浜や簰 \ No newline at end of file diff --git a/liuxin/liuxincpplevel1/p04_cppScoreManagement/main.cpp b/liuxin/liuxincpplevel1/p04_cppScoreManagement/main.cpp new file mode 100644 index 00000000..2c6c5303 --- /dev/null +++ b/liuxin/liuxincpplevel1/p04_cppScoreManagement/main.cpp @@ -0,0 +1,31 @@ +#include +#include +#include "Student.h" +#include "Class.h" +using namespace std; + +/* run this program using the console pauser or add your own getch, system("pause") or input loop */ + +int n,m; +char s[1000],t[1000]; +int main(int argc, char** argv) { + Class math("math","teacher:gaozhongxi"); + cin>>n; + for (int i=1;i<=n;++i) { + scanf("%s%s",s+1,t+1); + Student a(s,t); + math.Add(a); + } + math.ShowList(); + cin>>m; + for (int i=1;i<=m;++i) { + scanf("%s%s",s+1,t+1); + Student b(s,t); + if (math.Delete(b)) cout<<"OK\n"; + else cout<<"Bad\n"; + } + math.ShowList(); + math.InputScore(); + math.ShowList(); + return 0; +} diff --git a/liuxin/liuxincpplevel1/p05_Canvas/README.md b/liuxin/liuxincpplevel1/p05_Canvas/README.md new file mode 100644 index 00000000..420ff287 --- /dev/null +++ b/liuxin/liuxincpplevel1/p05_Canvas/README.md @@ -0,0 +1,6 @@ +### 棰樼洰锛欳anvas锛堢敾甯冪▼搴忥級 + +### 鍔熻兘瑕佹眰锛 + +1. 鍙互鍦–anvas涓婃坊鍔犱换鎰忔暟閲忕殑Circle锛堝渾锛夈丷ect锛堢煩褰級绛夊浘褰㈠厓绱 +2. 鍙敾鍑虹敾甯冧笂鐨勬墍鏈夊浘褰紙鍙敤鍦╟onsole涓婅緭鍑哄浘褰㈠厓绱犵殑鍚嶇О銆佸睘鎬у弬鏁帮紝鏉ヤ唬鏇垮湪鐪熷疄鐨勫浘褰㈢晫闈㈢殑缁樺埗鎿嶄綔锛 \ No newline at end of file diff --git a/liuxin/liuxincpplevel1/p06_CircleAndPoint/Circle.cpp b/liuxin/liuxincpplevel1/p06_CircleAndPoint/Circle.cpp new file mode 100644 index 00000000..bc76fa72 --- /dev/null +++ b/liuxin/liuxincpplevel1/p06_CircleAndPoint/Circle.cpp @@ -0,0 +1,27 @@ +#include +#include "Point.h" +#include "Circle.h" +using namespace std; + +Circle::Circle(Point oo,double rr){ + O=oo; + R=rr; +} + +Circle::Circle(double xx,double yy,double rr){ + O.move(xx,yy); + R=rr; +} + +void Circle::change(double r){ + R+=r; +} + +void Circle::move(double xx,double yy){ + O.move(xx,yy); +} + +void Circle::show(){ + O.show(); + cout<<"R="< +#include "Point.h" +using namespace std; + +Point::Point(double xx,double yy){ + x=xx; + y=yy; +} + +void Point::move(double dx,double dy){ + x+=dx; + y+=dy; +} + +void Point::show(){ + cout<<'<'<'< +#include "Point.h" +#include "Circle.h" +using namespace std; + +/* run this program using the console pauser or add your own getch, system("pause") or input loop */ + +int main(int argc, char** argv) { + while (1) { + double x,y,r; + cin>>x>>y>>r; + Point A(x,y); + Circle Q(A,r),P(x,y,r); + Q.show(); + cin>>x>>y; + Q.move(x,y); + Q.show(); + cin>>x>>y; + P.move(x,y); + P.show(); + } + return 0; +} diff --git a/liuxin/liuxincpplevel1/p07_Circuit/README.md b/liuxin/liuxincpplevel1/p07_Circuit/README.md new file mode 100644 index 00000000..16deef52 --- /dev/null +++ b/liuxin/liuxincpplevel1/p07_Circuit/README.md @@ -0,0 +1,8 @@ +### 棰樼洰锛欳ircuit锛堢數璺級 + +### 鍔熻兘瑕佹眰锛 + +瀹炵幇涓涓數璺ā鎷燂細 + +1. 鐢佃矾涓彲鎺ュ叆锛氱數鐏侀鎵囥佸紑鍏崇瓑鍣ㄤ欢 +2. 鍙氳繃寮鍏崇殑on銆乷ff鍔ㄤ綔鏉ユ帶鍒剁數璺腑鐨勫櫒浠跺紑鍏 diff --git a/liuxin/liuxincpplevel1/p08_EmployeeAndSales/README.md b/liuxin/liuxincpplevel1/p08_EmployeeAndSales/README.md new file mode 100644 index 00000000..42bd233b --- /dev/null +++ b/liuxin/liuxincpplevel1/p08_EmployeeAndSales/README.md @@ -0,0 +1,10 @@ +### 棰樼洰锛欵mployee & Sales锛堝憳宸 涓 閿鍞憳锛 + +### 鍔熻兘瑕佹眰锛 + +1. 瀹炵幇涓涓泧鍛樼被锛 + 2. 璁板綍鍛樺伐鐨勫鍚嶃佸勾榫勩佺骇鍒瓑灞炴 + 3. 鍙绠楀憳宸ョ殑宸ヨ祫锛堟寜姣忎釜绾у埆1000鍏冭绠楋級 +2. 瀹炵幇涓涓攢鍞憳绫伙細 + 3. 璁板綍sales鐨勯攢鍞 + 4. 璁$畻宸ヨ祫鏃堕渶瑕佸湪绾у埆宸ヨ祫鍩虹涓婏紝鍔犱笂閿鍞彁鎴愶紙鎸20%鏍哥畻锛 \ No newline at end of file diff --git a/liuxin/liuxincpplevel1/p09_Tree/README.md b/liuxin/liuxincpplevel1/p09_Tree/README.md new file mode 100644 index 00000000..965fd7da --- /dev/null +++ b/liuxin/liuxincpplevel1/p09_Tree/README.md @@ -0,0 +1,8 @@ +### 棰樼洰锛歍ree + +### 鍔熻兘瑕佹眰锛 + +1. 鍙互鍦ㄦ爲鐨勬煇涓妭鐐逛笂append浠绘剰鏁伴噺鐨勫瓙鑺傜偣 +2. 姣忎釜鑺傜偣閮藉彲浠ヤ繚瀛樹竴涓猧nt鍨嬬殑鍊 +3. 鍙幏鍙栬妭鐐圭殑parent锛堢埗鑺傜偣锛 +4. 鍙绠楄妭鐐圭殑瀛愬瓩鑺傜偣鎬绘暟 \ No newline at end of file diff --git a/liuxin/liuxincpplevel1/p10_Iterator/README.md b/liuxin/liuxincpplevel1/p10_Iterator/README.md new file mode 100644 index 00000000..31eff73e --- /dev/null +++ b/liuxin/liuxincpplevel1/p10_Iterator/README.md @@ -0,0 +1,5 @@ +### 棰樼洰锛欼terator锛堣凯浠e櫒锛 + +### 鍔熻兘瑕佹眰锛 + +涓篞ueue瀹炵幇涓涓凯浠e櫒 diff --git a/liuxin/liuxincpplevel1/p11_Fighters/README.md b/liuxin/liuxincpplevel1/p11_Fighters/README.md new file mode 100644 index 00000000..58761a68 --- /dev/null +++ b/liuxin/liuxincpplevel1/p11_Fighters/README.md @@ -0,0 +1,5 @@ +### 棰樼洰锛氭墦椋炴満灏忔父鎴 + +### 鍔熻兘瑕佹眰锛 + +闅忓績鎵娆诧紒锛侊紒 \ No newline at end of file diff --git a/liuxin/liuxincpplevel1/p11_Fighters/TodoList.md b/liuxin/liuxincpplevel1/p11_Fighters/TodoList.md new file mode 100644 index 00000000..4d778f4e --- /dev/null +++ b/liuxin/liuxincpplevel1/p11_Fighters/TodoList.md @@ -0,0 +1,23 @@ + 缂栧彿 | 浠诲姟(鍔熻兘) | Value | Effort | 鏄惁宸插畬鎴 +------|------------|-------|--------|-----------| +1 | 瀹屾垚SFML閰嶇疆锛屾樉绀衡淔**K SFML鈥 | 0 | oo | Y | +2 | 鏄剧ず涓鏋堕潤姝㈢殑椋炴満浜庡睆骞曞簳閮 | 5 | oo | Y | +3 | 鑳屾櫙闊充箰 | 1 | 0.1 | Y | +4 | 宸﹀彸閿紝鎺у埗绉诲姩椋炴満 | 10 | 1 | Y | +5 | 闄愬埗宸﹀彸杈圭晫 | 1 | 0.1 | Y | +6 | 绌烘牸閿紑鐐紝鏄剧ず杩愬姩鐨勭偖寮 | 5 | 0.2 | Y | +7 | 鐐脊椋炲嚭杈圭晫澶勭悊 | 2 | 0.2 | Y | +8 | 闅忔満浜х敓鏁屾満锛屽苟鍚戜笅杩愬姩 | 10 | 0.1 | Y | +9 | 鏁屾満椋炲嚭杈圭晫澶勭悊 | 2 | 0.1 | Y | +10 | 纰版挒澶勭悊锛堟晫鏈轰笌鐐脊纰版挒锛墊 10 | 0.1 | Y | +11 | 鏄剧ず鏁屾満鐖嗙偢杩囩▼ | 10 | | | +12 | 鐖嗙偢澹伴煶 | 2 | 0.3 | Y | +13 | 璁″垎鍙婃樉绀 | 5 | 0.1 | Y | +14 | 鏁屾満鐐脊澶勭悊 | 10 | 0.5 | Y | +15 | 琚晫鏈哄嚮涓鐞嗭紙鐐告瘉銆3鏉″懡锛墊 10 | | | +16 | 杩囧叧鎺у埗锛堣繃鍏抽渶瑕佽鍒嗐佹父鎴忛熷害鎺у埗锛墊 5 | | | +17 | 绱鍒嗘暟杈惧畾鍊煎嚭鐜癰oss鎴 | 5 | | | +18 | boss鐗规畩瀛愬脊 | 8 | | | +19 | | | | | +20 | | | | | +鍚堣 | - | 63 | 2*oo+2.8 | | diff --git a/liuxin/liuxinlevel2/GA/README.md b/liuxin/liuxinlevel2/GA/README.md new file mode 100644 index 00000000..9eb9d6ba --- /dev/null +++ b/liuxin/liuxinlevel2/GA/README.md @@ -0,0 +1,11 @@ +### 棰樼洰锛氬寰凣A锛堥仐浼犵畻娉曪級 + +### 瑕佹眰锛 + +1. 浠绘剰缁欏嚭涓涓糠瀹湴鍥撅紙鍙傝level1/p09_maze锛,閲囩敤GA瀹炵幇涓涓畻娉曪紝瀵绘壘鏈浣宠矾寰 +2. 缁樺埗鍑烘渶浣宠矾寰 +3. 鎵撳嵃杩愮畻鏃堕棿 + +### 鍙傝冿細 + +[閬椾紶绠楁硶鍏ラ棬](http://blog.csdn.net/zzwu/article/details/561577) \ No newline at end of file diff --git a/liuxin/liuxinlevel2/NeuralNetworks/README.md b/liuxin/liuxinlevel2/NeuralNetworks/README.md new file mode 100644 index 00000000..0ff03ec4 --- /dev/null +++ b/liuxin/liuxinlevel2/NeuralNetworks/README.md @@ -0,0 +1,10 @@ +### 棰樼洰锛氭暟瀛楄瘑鍒 & 绁炵粡缃戠粶 + +### 瑕佹眰锛 + +1. 鍦ㄤ竴涓8*8鐨勭偣闃典腑缁樺埗锛堟ā鎷燂級鎵嬪啓鐨勬暟瀛 +2. 璁捐骞惰缁冧竴涓缁忕綉缁滐紝浠ヨ瘑鍒墜鍐欑殑鏁板瓧 + +### 鍙傝冿細 + +[绁炵粡缃戠粶鍏ラ棬](http://blog.csdn.net/zzwu/article/details/574931) \ No newline at end of file diff --git a/liuxin/liuxinlevel2/PI.cpp b/liuxin/liuxinlevel2/PI.cpp new file mode 100644 index 00000000..0a3dcc0f --- /dev/null +++ b/liuxin/liuxinlevel2/PI.cpp @@ -0,0 +1,128 @@ +#include +#include +#include +#include +#include +#include +using namespace std; +typedef long long LL; +inline int read(){ + int x=0,f=1; char ch=getchar(); + while (ch<'0'||ch>'9') { if (ch=='-') f=-1; ch=getchar(); } + while (ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } + return x*f; +} + +const LL MAXN=10004,base=10000; +struct BigNum{ + LL l,x[MAXN]; + inline void clear() { l=1; memset(x,0,sizeof(x)); } + BigNum() { clear(); } + BigNum(LL a) { for (l=0;a;a/=base) x[++l]=a%base; } + BigNum operator +(const BigNum &B) const { + BigNum C; C.l=(B.l>l?B.l:l); + for (LL i=1;i<=C.l;++i) { + C.x[i]+=x[i]+B.x[i]; + if (C.x[i]>=base) { + C.x[i+1]+=C.x[i]/base; + C.x[i]%=base; + } + } + if (C.x[C.l+1]) C.l++; + return C; + } + BigNum operator -(const BigNum &B) const { + BigNum C=(*this); + for (LL i=1;i<=C.l;++i) { + C.x[i]-=B.x[i]; + if (C.x[i]<0) { C.x[i+1]--; C.x[i]+=base; } + } + while (C.l>1&&!C.x[C.l]) C.l--; + return C; + } + BigNum operator *(const BigNum &B) const { + BigNum C; C.l=l+B.l-1; + for (LL i=1;i<=l;++i) + for (LL j=1;j<=B.l;++j) { + LL k=i+j-1; + C.x[k]+=x[i]*B.x[j]; + if (C.x[k]>=base) { + C.x[k+1]+=C.x[k]/base; + C.x[k]%=base; + } + } + while (C.x[C.l+1]>0) { + C.l++; + if (C.x[C.l]>base) { + C.x[C.l+1]=C.x[C.l]/base; + C.x[C.l]%=base; + } + } + return C; + } + BigNum operator *(const LL &b) const { + BigNum C; C.l=l; + for (LL i=1;i<=C.l;++i) { + C.x[i]+=x[i]*b; + if (C.x[i]>=base) { + C.x[i+1]+=C.x[i]/base; + C.x[i]%=base; + } + } + while (C.x[C.l+1]) { + LL i=C.l++; + if (C.x[i]>=base) { + C.x[i+1]+=C.x[i]/base; + C.x[i]%=base; + } + } + return C; + } + BigNum operator /(const LL &b) const { + BigNum C=(*this); + for (LL i=C.l,j=0;i>0;--i) { + j=j*base+C.x[i]; + C.x[i]=j/b; + j%=b; + } + while (C.l>1&&C.x[C.l]==0) C.l--; + return C; + } + void write(){ + cout<1;++i) { + B=B*i; //B.write(); + j=i*2+1; + B=B/j; //B.write(); + A=A+B; + } + //cout<