Câu 2: Cho dãy số {a1,a2,…an} với n<=100. Viết chương trình thực hiện các công việc sau:
a) Đọc các giá trị {a1,a2,..an} vào từ bàn phím và xác định xem dãy nhận được có phải là hoán vị của {1,2..n} không?
Phân chia {a1,a2…an} thành các dãy con tăng dần có độ dài cực đại.code :
Bai 2a
#include <stdio.h>
#include <conio.h>
void nhapmang(int a[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf("\nNhap phan tu thu %5d : ",i);
scanf("%d",&a[i]);
}
}
void xemmang(int a[],int n)
{
int i;
printf("\n");
for (i=0;i<n;i++)
printf(" %5d ",a[i]);
printf("\n");
}
int kiemtra(int x[],int n)
{
inty[1000],i;
for(i=0;i<1000;i++) y[i]=0;
for(i=0;i<n;i++) (y[x[i]])++;
for(i=1;i<=n;i++) if (y[i]!=1) return 0;
return 1;
}
void main()
{
int n;
int a[100];
printf("\nnhap so phan tu trong mang : ");
scanf("%d",&n);
nhapmang(a,n);
xemmang(a,n);
if (kiemtra(a,n)) printf("\n La hoan vi cua .................");
else printf("\n Khong phai La hoan vi..............");
getch();
}
Bai2 B
#include <stdio.h>
#include <conio.h>
void nhapmang(int a[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf("\nNhap phan tu thu %5d : ",i);
scanf("%d",&a[i]);
}
}
void xemmang(int a[],int n)
{
int i;
printf("\n");
for (i=0;i<n;i++)
printf(" %5d ",a[i]);
printf("\n");
}
void daycon(int b[],int n)
{
inti=0,j,x;
printf("\nDay con");
do
{
while((b[i]>b[i+1])&&(i<n))
{
printf("\n%5d\n",b[i]);
i++;
}
if (i>=n) break;
j=i;
while((b[i]<=b[i+1])&&(i<n)) i++;
printf("\n");
for(x=j;x<=i;x++) printf("%5d",b[x]);
printf("\n");
} while(i<n);
}
void main()
{
int n;
int a[100];
printf("\nnhap so phan tu trong mang : ");
scanf("%d",&n);
nhapmang(a,n);
xemmang(a,n);
printf("\nDay con");
daycon(a,n);
getch();
}
No comments:
Post a Comment