說明:執行環境:
:ubuntu
input.txt:
6 50
2 3 13 8 80 20
裝入的資料是:
2 3 8 13 20
output.txt:5
源**:
#include
#include
#include
#include
#include
#define n 20
//快速排序遞迴,
a代表陣列,
low代表陣列的第乙個數的下標,
high
代標陣列最後乙個數的下標
int partition(int a,int low,int high)
int x=a[low];//將陣列的第乙個數賦給x
while(lowwhile(a[high]>=x && low從後往前找比
x小的數
high--;
if(lowa[low]=a[high];//從後往前找到比
x小的數賦給
a[low]
low++;
while(a[low]從前往後找比
x大的數
low++;
if(lowa[high]=a[low];//從前往後找比
x大的數賦給
a[high]
high--;
a[low]=x;
return low;
//開速排序
void quicksort(int a,int low,int high)
if(low
int pos=partition(a,low,high);//遞迴呼叫
quicksort(a,low,pos-1);
quicksort(a,pos+1,high);
//找出最多可以儲存的數,
a代表陣列,
low代表陣列開始小標
high
代表陣列最大下標
void maxnumber(int a,int low,int high)
int i,t;
file *fp1;
printf("裝入的資料分別是:
\n");
for(i=low;iif(a[i]printf("%d ",a[i]);
a[1]=a[1]-a[i];
else //將結果寫入檔案
fp1=fopen("output.txt","wt");
if(fp1==null)
printf("connot open file!");
exit(0);
fprintf(fp1,"%d",(i-2));
fclose(fp1);
printf("\noutput.txt:\n");
fp1=fopen("output.txt","rt");//讀檔案
if(fp1==null)
printf("connot open file!");
exit(0);
i=0;
while(fscanf(fp1,"%d",&a[i])!=eof)
printf("%d\n",a[i]);
i++;
fclose(fp1);
main()
file *fp;
int i,t,a[n];
printf("input.txt:\n"); //讀檔案
fp=fopen("input.txt","rt");
if(fp==null)
printf("connot open file!");
exit(0);
i=0;
while(fscanf(fp,"%d",&a[i])!=eof)
i++;
t=i;
printf("%d %d\n",a[0],a[1]);
for(i=2;iprintf("%d ",a[i]);
printf("\n");
fclose(fp);
quicksort(a,2,t);
maxnumber(a,2,t);
貪心演算法 裝箱問題
貪心演算法中必須設定乙個貪心準則 來尋求每一步的最優解,但最後往往不是問題的整體最優解。問題 假設有n個物品,其體積為v1,v2,v3,v4.v n,有若干個體積為v的箱子 理論物品的體積應該小於箱子的體積 要求把所有物品全部裝入箱子中,要求開啟的箱子數最少。分析 怎樣合理化分配才能使得開啟的箱子數...
貪心演算法(裝箱問題)
貪心演算法的基本思想是找出整體當中每個小的區域性的最優解,並且將所有的這些區域性最優解合起來形成整體上的乙個最優解。因此能夠使用貪心演算法的問題必須滿足下面的兩個性質 1.整體的最優解可以通過區域性的最優解來求出 2.乙個整體能夠被分為多個區域性,並且這些區域性都能夠求出最優解。3.區域性最優解不一...
貪心演算法 區間問題
區間選單個點 問題描述 數軸上有n個閉區間 ai,bi 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 輸入 第1行 乙個整數n 接下來n行,每行2個整數ai,bi 輸出 乙個整數,表示滿足條件的最少點數。樣例輸入 5 4 62 3 1 46 8 5 7 樣例輸出 2策略分...