| | toán rời rạc- nghia dai ca | |
| | Tác giả | Thông điệp |
---|
mrmax
Tổng số bài gửi : 59 Points : 5111 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: toán rời rạc- nghia dai ca Tue Sep 28, 2010 12:22 am | |
| để tôi phá trinh topic trước vậy Bài 7 sách thầy nghĩa
#include<conio.h> #include<iostream.h> int i,b,dem,n; int *x,*a,*t; void Init() { cout<<"Nhap vao so phan tu n= "; cin>>n; x=new int[n+1]; t=new int[n+1]; cout<<"Nhap va cac he so\n"; a=new int[n+1]; for(i=1;i<=n;i++) cin>>a[i]; cout<<"Nhap b= "; cin>>b; dem=0; x[1]=1; t[1]=a[1]*x[1]; } void Result() { dem++; cout<<dem<<':'; for(i=1;i<=n;i++) cout<<x[i]<<','; cout<<"\n"; } void Try(int i) { int j; for(j=1 ; j <= (b-t[i-1]) / a[i] ; j++) { x[i]=j; t[i]=t[i-1]+j*a[i]; if((x[i]*a[i])==(b-t[i-1])) Result(); else Try(i+1); } } int main() { Init(); Try(2); getch(); }
Được sửa bởi mrmax ngày Wed Sep 29, 2010 3:22 am; sửa lần 2. | |
| | | Admin Admin
Tổng số bài gửi : 35 Points : 5081 Reputation : 0 Join date : 31/08/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Tue Sep 28, 2010 10:33 am | |
| uhm, nhung ma comment bai nay lam gi dau ra dau vao de anh em de theo doi nha | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Wed Sep 29, 2010 1:56 am | |
| /*bai 4 input : nhap vao n out put:in ra tat ca cac xau nhi phan do dai n va ko chua 2 so 0 lien tiep*/ #include<iostream.h> #include<conio.h> #include<stdio.h> void try_(int,int a[],int); void Inkq(int a[],int); int main (void) { int n,a[100];
cout<<"nhap n "<<endl; cin>>n;
a[0] = 1; try_(1,a,n);
getch(); return(0); } void try_(int i,int a[],int n) { for(int k = 0 ; k <= 1 ; k ++ ) if ((a[i - 1] != 0) || ( k != 0)) { a[i] = k; if(i == n) Inkq(a,n); else try_(i + 1,a,n); } } void Inkq(int a[],int n) { for(int i = 1 ; i <= n ; i ++ ) cout<<a[i]; cout<<endl; } | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Wed Sep 29, 2010 2:27 am | |
| bài 9: cho số nguyên dương n liệt kê tất cả các cách biểu diễn n dưới dạng tổng của các số nguyên dương (bai nay quay lui có sử dụng nhánh cận) /* bai 9 input : nhap vao n output : in ra tat ca cac cah bieu dien n thanh tong cac so nguyen duong */ #include<conio.h> #include<stdio.h> #include<iostream.h> void try_(int,int,int a[],int&); void Inkq(int,int a[],int); int main(void) { int n; int tong = 0; int a[100]; a[0] = 1; cout<<"nhap n= "<<endl; cin>>n; if (n > 0) try_(1,n,a,tong); getch(); return(0); } void try_(int i,int n,int a[],int &tong) { for(int k = a[i-1] ; k <= n - tong ; k ++) if(k != n) { a[i] = k; tong = tong + k; if ( tong == n) Inkq(i,a,n); else try_(i + 1,n,a,tong); tong = tong - k; // quay lui } } void Inkq(int temp,int a[],int n) { for(int i = 1 ; i <= temp ; i ++ ) cout<<"+"<<a[i]; cout<<"="<<n<<endl; } | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Wed Sep 29, 2010 10:19 pm | |
| bài 12 trong sách anh nghĩa cứ gọi là khó thôi rồi | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Thu Sep 30, 2010 8:50 pm | |
| bài 11 :tam giac than bi' #include<conio.h> #include<stdio.h> #include<iostream.h> #include<process.h> void Try_(int,int,int mark[],int kq[],int,int,int); void Inkq(int kq[],int); int main(void) { int n,k,nho,kq[100],mark[100]; cout<<"nhap n,k="<<endl; cin>>n>>k;
for(int i = 1 ; i <= 3*n-3 ; i ++ ) mark[i] = 0; int tong = 0;
Try_(1,k,mark,kq,tong,nho,n);
cout<<"ko ton tai nghiem "<<endl; getch(); return(0); } void Try_(int i,int k,int mark[],int kq[],int tong,int nho,int n) { int lg = 1; for(int p = 1; p <= 3*n-1 ; p ++ ) if (( p + tong <= k)&&(mark[p] == 0)) { if (i == 1) nho = p; tong = p + tong; mark[p] = 1; kq[i] = p; if ((i == n)&&(tong != k)) lg = 0; if ((i == 2*n - 1)&&(tong != k)) lg = 0; if (( i == 3*n - 3)&&(tong + nho == k)) Inkq(kq,n); if (((i == n)||(i == 2*n - 1)||(i== 3*n - 3))&&(lg == 1)) tong = p; if ((i <=3*n - 3)&&(lg == 1)) Try_(i+1,k,mark,kq,tong,nho,n); tong= tong - p; mark[p] = 0; } } void Inkq(int kq[],int n) { int a[20][20]; for(int i = 1 ; i <= n ; i ++ ) for(int j = 1 ; j <= n ; j++ ) a[i][j]=0;
//nap kq vao mang 2 chieu de in ra for( i = 1 ; i <= n ; i ++ ) a[i][1] = kq[i]; for( i = n + 1 ; i <= 2*n - 1 ; i ++ ) a[n][i - n + 1] = kq[i]; for( i = 2*n ; i <= 3*n - 3 ; i ++ ) a[ 3*n - i - 1][ 3*n - i - 1] = kq[i];
//inkq for( i = 1 ; i <= n ; i ++ ) { for( j = 1 ; j <= n ; j ++ ) if (a[i][j] != 0) printf("%3d",a[i][j]); else printf(" "); printf("\n"); }
//dung chuong trinh getch(); exit(0); } | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Thu Sep 30, 2010 9:05 pm | |
| ak minh hoi cai cai setw trong thu vien nao the nhi? | |
| | | mrmax
Tổng số bài gửi : 59 Points : 5111 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Thu Sep 30, 2010 10:45 pm | |
| | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Thu Sep 30, 2010 11:45 pm | |
| | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Sun Oct 03, 2010 10:22 pm | |
| bai toan ma di tuan /* le minh chien demo bai` con ma~ di tuan cho anh em do de quy nen chi chay duoc voi n<8 voi n=5 co 304 cach */ #include<conio.h> #include<stdio.h> #include<iostream.h> #include<iomanip.h> void Try_(int x,int y,int n,int dem,int dong[],int cot[],int a[20][20]); void Inkq(int a[20][20],int); int main(void) { int a[20][20],n; int dong[8]={1,1,-1,-1,2,2,-2,-2}; int cot[8]={2,-2,2,-2,1,-1,1,-1}; cout<<"nhap n la kt ban co :"<<endl; cin>>n; for(int i = 1 ; i <= n ; i ++ ) for(int j = 1 ; j <= n ; j ++ ) a[i][j] = 0; a[1][1] = 1; int dem = 1; Try_(1,1,n,dem,dong,cot,a); getch(); return(0); } /* chuong trinh de quy */ void Try_(int x,int y,int n,int dem,int dong[],int cot[],int a[20][20]) { for(int k = 0 ; k < 8 ; k ++ ) if ((x + dong[k] >= 1)&&(x + dong[k] <= n)&&(y + cot[k] >= 1)&&(y + cot[k] <= n) &&(a[x + dong[k]][y + cot[k]] == 0)) { dem ++; a[x + dong[k]][y + cot[k]] = dem; if (dem == n*n) Inkq(a,n); else Try_(x + dong[k],y + cot[k],n,dem,dong,cot,a); dem --; a[x + dong[k]][y + cot[k]] = 0; } } void Inkq(int a[20][20],int n) { int i,j; for( i = 1 ; i <= n ; i ++ ) { for ( j = 1 ; j <= n ; j ++ ) cout<<setw(4)<<a[i][j]; cout<<endl; } cout<<"**********************"<<endl; } | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Wed Oct 06, 2010 7:01 am | |
| bài 10 ma phương n=3 va bang 4 co vẻ chạy được n=4 chạy được 1 lcs rồi đơ2 #include<conio.h> #include<stdio.h> #include<iostream.h> #include<iomanip.h> #include<math.h> int sizebam = 0;
void Try_(int i,int tong,int a[],int dd[],int mangbam[],int n); void Bam(int a[],int mangbam[],int n); void Inkq(int a[],int n);
int main(void) { int tong = 0; int n,dd[100],a[100],mangbam[100]; cout<<"nhap n"<<endl; cin>>n; for(int i = 1; i <= n*n ; i ++) dd[i] = 0; Try_(1,tong,a,dd,mangbam,n); getch(); return(0); } /* de quy sinh kq*/ void Try_(int i,int tong,int a[],int dd[],int mangbam[],int n) { int k,lg,tg = ceil(float(i)/n)*n*(n*n + 1)/2; int tg1 = n*n; for( k = 1 ; k <= tg1 ; k ++ ) if ((tong + k <= tg)&&(dd[k] == 0)) { lg = 1; if ((i % n == 0)&&(tong + k != tg)) lg = 0; if (lg) { dd[k] = 1; tong += k; a[i] = k; if ( i == tg1 ) Bam(a,mangbam,n); else Try_(i+1,tong,a,dd,mangbam,n); dd[k] = 0; tong -= k; } } } /*kieu ta dieu kien duong cheo va dk bam */ void Bam(int a[],int mangbam[],int n) { int tong; int lg = 1; for(int i = 1 ; i <= n ; i ++ ) { tong = 0; for(int j = 0 ; j < n ; j ++ ) tong += a[i+j*n]; if (tong != n*(n*n + 1)/2) { lg = 0; break; } } if (lg) { lg = 1; tong = 1; int cheo1 = 0; int cheo2 = 0; for( i = 1 ; i <= n ; i ++ ) { tong = tong * a[(i - 1)*n + i] * a[i*(n - 1) + 1]; cheo1 = cheo1 + a[(i - 1)*n + i]; cheo2 = cheo2 + a[i*(n - 1) + 1]; } if ((cheo1 == n*(n*n + 1)/2)&&(cheo2==n*(n*n+1)/2)) { for( i = 1 ; i <= sizebam ; i ++ ) if ( mangbam[i] == tong ) { lg = 0; break; } if(lg) { sizebam ++; mangbam[sizebam] = tong; Inkq(a,n); } } } } /*in ket qua */ void Inkq(int a[],int n) { int tg1 = n*n; for(int i = 1 ; i <= tg1 ; i ++ ) { cout<<setw(3)<<a[i]; if(i % n == 0) cout<<endl; } cout<<"**************************"<<endl; } | |
| | | mrmax
Tổng số bài gửi : 59 Points : 5111 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Wed Oct 06, 2010 9:26 am | |
| bài 5 tôi làm như cách chiến nói nưng không hiểu sai chỗ nào
#include<conio.h> #include<iostream.h> #include<iomanip.h> int i,dem=0,n; char x[4]; int b[2]; void Result() { dem++; cout.fill('0'); cout<<setw(2)<<dem<<':'; for(i=1;i<=4;i++) cout<<x[i]; cout<<"\n"; } void Try(int i) { char j; for(j=3 ; j>=1 ; j--) { if((b[1]<1)&&(b[2]<1)) { x[i]=j+64; if(j==1) b[1]++; if(j==2) b[2]++; if(i==4) Result(); else Try(i+1); b[1]=0; b[2]=0; } } } int main() { b[1]=0; b[2]=0; Try(1); getch(); } | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Thu Oct 07, 2010 2:24 am | |
| ac nhầm đây
#include<conio.h> #include<iostream.h> #include<iomanip.h> int i,dem=0,n; char x[4]; int b[2]; void Result() { dem++; cout.fill('0'); cout<<setw(2)<<dem<<':'; for(i=1;i<=4;i++) cout<<x[i]; cout<<endl; } void Try(int i) { char j; for(j=3 ; j>=1 ; j--) { if(b[j]<1) { x[i]=j+64; b[j]++; if(i==4) Result(); else Try(i+1); b[j]--;
} } } int main() { b[1]=0; b[2]=0; b[3]=-4; Try(1); getch(); } | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Thu Oct 07, 2010 2:31 am | |
| if((b[1]<1)&&(b[2]<1)) { x[i]=j+64; if(j==1) b[1]++; if(j==2) b[2]++; if(i==4) Result(); else Try(i+1); b[1]=0; b[2]=0; } bai thành nhầm chỗ này
1. if((b[1]<1)&&(b[2]<1)) nếu cậu để điều kiện này thì trường hợp nhập chữ C nếu có 1 chữ A hoặc B rồi thì nó sẽ ko ghi nhận.mà rõ ràng thêm chư C vào vẫn được phai chuyển thành if (b[j]<1) (nhưng ban đầu khởi tạo thêm b[3]=-4)
2. chỗ quay lui nưa b[1]=0; b[2]=0;
nhớ rằng nếu bên trên ta làm gi thì quay lui phải làm ngươc lại trên ta ++ thi quay lui phai --(nếu trên la *2 thì dưới phải chia 2) sửa thành b[j]--
| |
| | | mrmax
Tổng số bài gửi : 59 Points : 5111 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Thu Oct 07, 2010 6:37 am | |
| ok thank.cái này mới học nên còn hơi ngu còn bài 6 nữa tương tự bài 7 mà bài 7 thì ra còn bái 6 thì tịt.bó tay #include<conio.h> #include<iostream.h> int i,b,dem,n; int *x,*a,*t; void Init() { cout<<"Nhap vao so phan tu n= "; cin>>n; x=new int[n+1]; t=new int[n+1]; cout<<"Nhap va cac he so\n"; a=new int[n+1]; for(i=1;i<=n;i++) cin>>a[i]; cout<<"Nhap b= "; cin>>b; dem=0; x[1]=1; t[1]=a[1]*x[1]; } void Result() { dem++; cout<<dem<<':'; for(i=1;i<=n;i++) cout<<x[i]<<','; cout<<"\n"; } void Try(int i) { int j; for(j=1 ; j >=0 ; j--) { x[i]=j; t[i]=t[i-1]+j*a[i]; if((i==n)&&(x[i]*a[i])==(b-t[i-1])) Result(); else Try(i+1); } } int main() { Init(); Try(2); getch(); } | |
| | | chien_le
Tổng số bài gửi : 35 Points : 5055 Reputation : 0 Join date : 01/09/2010
| Tiêu đề: Re: toán rời rạc- nghia dai ca Thu Oct 07, 2010 6:55 am | |
| oh cai bai 6-7 do toi ko hieu de` co j hom hop club anh em hoi ky lai de xem.ko hieu ko lam duoc | |
| | | Sponsored content
| Tiêu đề: Re: toán rời rạc- nghia dai ca | |
| |
| | | | toán rời rạc- nghia dai ca | |
|
Trang 1 trong tổng số 1 trang | |
Similar topics | |
|
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| |