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==`
`) //當鍵盤輸入回車時結束輸入輸入
{
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("
");
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==`
`)
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("
");
return 0;
}
猴子選大王問題
【問題描述】
N只猴子選大王,選舉方法如下:所有猴子按1,2,3,… ,N編號圍坐一圈,從第1個猴子開始報數,報到M號退出圈外,如此迴圈報數,直到圈內只剩下一個猴子,即為大王。程式設計輸出大王的原始序號。N和M的值由鍵盤輸入。如果你想成為剩下的那一個,在N一定的情況下,你應該站在什麼位置上?程式設計實現位置的求解。
【輸入形式】
輸入兩個數字N和M,N為猴子的個數,M為報到後退出圈外的數字。
【輸出形式】
顯示最後剩下的猴子的原始序號。
【樣例輸入】
5 3
【樣例輸出】
4
【樣例說明】
共5個猴子圍成一圈,報到3號退出圈外,最後留下的猴子的原始編號為4
【評分標準】
當輸入的M,N不合法時應當給出錯誤提示“請輸入合法的M,N值!”。
#include<stdio.h>
int main()
{
int n,m;
int last = 0;
scanf("%d %d",&m,&n);
if(n<1 || m<1 )
{
printf("請輸入合法的M,N值!
");
}else{
for (int i=2;i<=m;i++)
{
last = (last+n)%i;
}
printf("%d
",last+1);
}
return 0;
}
相關文章
- 約瑟夫環問題 猴子選大王問題
- 猴子選大王,約瑟夫問題
- 主元素問題(C語言)C語言
- C語言解決排序問題C語言排序
- C----陣列越界問題、指標入門陣列指標
- 最大連續子陣列和求解問題(C語言)陣列C語言
- C語言 二維陣列課題程式碼C語言陣列
- 猴子選大王-phpPHP
- C語言入門題-找二維陣列中最大數及所在行列號 (10分)C語言陣列
- TopK問題,陣列中第K大(小)個元素問題總結TopK陣列
- [PAT B] 1008 陣列元素迴圈右移問題陣列
- 1008 陣列元素迴圈右移問題 (20分)陣列
- C++陣列預設初值問題C++陣列
- php陣列問題PHP陣列
- C語言指標和陣列筆試題C語言指標陣列筆試
- leetcode題解(陣列問題)LeetCode陣列
- 【C語言練習題】小球反彈問題C語言
- 猴子吃桃問題
- 1008 陣列元素迴圈右移問題 (20 分)java陣列Java
- C語言指標常見問題C語言指標
- C語言常見使用問題2C語言
- 七種常見的陣列排序演算法整理(C語言版本)陣列排序演算法C語言
- 演算法競賽C++快速入門演算法C++
- C語言陣列C語言陣列
- C語言_入門例題_PAGE1C語言
- 挑選方案問題(牛客競賽 思維題+推導公式)公式
- 羽夏閒談—— C 語言入門之問
- JAVA 猴子分桃子問題Java
- C語言演算法之猴子吃桃C語言演算法
- c 語言指標操作經典問題指標
- Linux下C語言編譯的問題LinuxC語言編譯
- 關於二維陣列指標的問題陣列指標
- C語言初學者最常問的幾個問題C語言
- 面試挖坑題:之C語言底層操作問題面試C語言
- C的二維陣列(習題)陣列
- js陣列全排列問題JS陣列
- Python陣列中求和問題Python陣列
- PAT1008 陣列元素迴圈右移問題(java實現)陣列Java