C語言算法競賽入門(二)---數組元素移動 、排序問題 、猴子選大王問題

數組元素移動

【問題描述】調整輸入數組A[0..n],將其分爲兩部分,左邊所有元素爲奇數,右邊所有元素爲偶數
【輸入形式】a0,b1,b2,a1,a2,b3,a3,a4
【輸出形式】a0,a1,a2,a3,a4,b1,b2,b3
【樣例輸入】1,2,33,8,5
【樣例輸出】1,33,5,2,8

代碼:

#include<stdio.h>

int main()
{
	int a[100];
	int n=100,i,j,count=1,m;
	for(i=0;i<n;i++)   //循環輸入數組數據
	{
		scanf("%d",&a[i]);
		char c=getchar();//getchar函數,從鍵盤的緩衝區中得到一個字符常量並賦值給c
		if(c=='\n')   //當鍵盤輸入回車時結束輸入輸入
		{
            break;
		}
		count++;
	}
	scanf("%d",&m);
	for(i=0;i<=count;i++)
	{	
		for(j=i+1;j<=count;j++)
		{
			if(m==(a[i]+a[j]))
			{
				printf("%d %d",a[i],a[j]);
				i=count+1; break;
			}
		}		
	}
	printf("\n");
	return 0;
}

 

排序問題

【問題描述】

輸入一個已經按升序排序過的數組和一個數字,在數組中查找兩個數,使得它們的和正好是輸入的那個數字。要求時間複雜度是O(n)。如果有多對數字的和等於輸入的數字,輸出任意一對即可。
【輸入形式】

一個升序排序的數組以空格隔開,以及一個目標數字,換行輸入
【輸出形式】

如果存在數組中兩個數字和爲目標數字,則輸出數字對;

如果存在多個滿足條件的數字對,輸入一對即可;

不存在則不輸出;
【樣例輸入】

1 2 4 7 11 15

15

【樣例輸出】

4 11
【樣例說明】

4+11=15
【評分標準】

時間複雜度必須爲 O(n),否則酌情給分。

#include<stdio.h>
int main()
{
    int a[100],b[100],c[100];
    int i,count=0,j=0,k=0;
	char s;
	for(i=0;i<100;i++)
	{
		scanf("%d",&a[i]);
		char c=getchar();
		if(c=='\n')
		break;
		scanf("%c",&s);
		count++;
	}
	for(i=0;i<=count;i++)
	{
		if(a[i]%2==1||a[i]%2==-1)
		{
			b[j]=a[i];
			j++;
		}
		if(a[i]%2==0)
		{
			c[k]=a[i];
			k++;
		}		
	}
	printf("%d",b[0]);
	for(i=0;i<j;i++)
		printf(",%d",b[i]);
	for(i=0;i<k;i++)
		printf(",%d",c[i]);
	printf("\n");
    return 0;
}

猴子選大王問題

【問題描述】

N只猴子選大王,選舉方法如下:所有猴子按1,2,3,&hellip; ,N編號圍坐一圈,從第1個猴子開始報數,報到M號退出圈外,如此循環報數,直到圈內只剩下一個猴子,即爲大王。編程輸出大王的原始序號。N和M的值由鍵盤輸入。如果你想成爲剩下的那一個,在N一定的情況下,你應該站在什麼位置上?編程實現位置的求解。
【輸入形式】

輸入兩個數字N和M,N爲猴子的個數,M爲報到後退出圈外的數字。
【輸出形式】

顯示最後剩下的猴子的原始序號。

【樣例輸入】

5 3
【樣例輸出】

4
【樣例說明】

共5個猴子圍成一圈,報到3號退出圈外,最後留下的猴子的原始編號爲4
【評分標準】

當輸入的M,N不合法時應當給出錯誤提示&ldquo;請輸入合法的M,N值!&rdquo;。

#include<stdio.h>

int main()
{
	int n,m;
	int last = 0;
	scanf("%d %d",&m,&n);
	
    if(n<1 || m<1 ) 
	{
		printf("請輸入合法的M,N值!\n");
	}else{		
		for (int i=2;i<=m;i++)
		{
			last = (last+n)%i;
		}
		printf("%d\n",last+1);
	}
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章