1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

[olympic tin 2010] Cùng thảo luận!

Thảo luận trong 'Thảo Luận' bắt đầu bởi Dê con, 23 Tháng năm 2010.

  1. Dê con New Member

    Số bài viết: 1,272
    Đã được thích: 1
    Điểm thành tích: 0
    Anh em trong hay ngoài đội tuyển olympic tin có quan tâm đến lập trình C cùng nhau thảo luận các bài tập qua topic này nha
  2. Dê con New Member

    Số bài viết: 1,272
    Đã được thích: 1
    Điểm thành tích: 0
    Bài tập sinh hoán vị xoá vị trí hồi thứ 7, đây là code của mình. Các bạn cho ý kiến nha
    Mã:
    // [Olympic] hoan vi nang cap.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include "conio.h"
    #define duongdan1 "bai1.inp"
    #define duongdan2 "bai1.out"
    int a[100],b[100],n,s;
    
    void input();
    void process();
    void output();
    int timchuoigiam();
    void hoanvi(int c, int d);
    int timsohoanvi(int c);
    void sapxeptangdan(int c);
    void xuatmang();
    int kiemtramang();
    
    int kiemtramang(){
    int k,i;
    k=0;
    for(i=1;i<=n;i++)
    	if (a[i]==b[i])
    		k=1;
    return k;
    }
    
    void xuatmang()
    {
    	int i;
    	if (kiemtramang()!=1)
    	{
    	for(i=1;i<=n;i++)
    		printf("%d ",a[i]);
    	printf("\n");
    	}
    }
    
    void input()
    {	int i;
    // khoi tao mien gia tri dau tien
    	printf("Moi nhap n\n");
    	scanf("%d",&n);
    	for (i=1;i<=n;i++)
    	{
    		a[i]=i;
    		printf("%d ",a[i]);
    	}
    printf("\n"); 
    
    //nhap vao mang loai bo vi tri
    FILE *fi;
    fi =fopen(duongdan1,"rt");
    i=1;
    do
    {
    	fscanf(fi,"%d",&b[i]);
    	i++;
    }
    while(!feof(fi));
    fclose(fi);
    }
    
    int timchuoigiam(){
    int k;
    k=n;
    while (a[k-1]>a[k])
    k=k-1;
    return k-1;
    }
    
    void hoanvi(int c, int d)
    {
    	int temp;
    	temp =a[c];
    	a[c]=a[d];
    	a[d]=temp;
    }
    
    int timsohoanvi(int c)
    {
    	int i;
    	i=n;
    	do
    	{
    	if (a[i]>a[c])
    		break;
    	i--;
    	}while (i>c);
    	return i;
    }
    
    void sapxeptangdan(int c)
    {
    	int i,j,temp;
    	for (i=c+1;i<=n;i++)
    	for (j=c+1;j<=n-1;j++)
    		if(a[j]>a[j+1])
    		{
    			temp =a[j];
    			a[j]=a[j+1];
    			a[j+1]=temp;
    		}
    }
    
    
     void process()
     {	int i;
     printf("Mang xoa vi tri \n");
     for(i=1;i<=n;i++) 
    	printf("%d ",b[i]);
     printf("\n");
    
     do{
    	i=timchuoigiam();
    	/*printf("%d \n",i);
    	printf("%d \n",timsohoanvi(timchuoigiam()));*/
    	hoanvi(i,timsohoanvi(i));
    	sapxeptangdan(i);
    	xuatmang();
    	
     }
     while(timchuoigiam()!=0);
    	
    
    
     }
     void output()
     {	
     }
     void main(){
    	 s=0;
    	 input();
    	 int i;
    	 process();
     }
    

Chia sẻ trang này