/* ABC XYZ abc xyz i j i指向A if a[i]>=a i++ j指向a if a[j]<=Z j++ ABCabc i j aBCAbc i j abCABc i j abcABC i */ #include <iostream> #include <string.h> using namespace std; void fun(char*a) { int len=strlen(a); int i=0,j=0; char tmp=0; while(j<len-1) { cout<<a<<endl; while(a[i]>='a'&&i<len) i++; j=i; while(a[j]<='Z'&&j<len-1) j++; tmp=a[i];a[i]=a[j];a[j]=tmp; } cout<<a<<endl; } void test0() { char s[]="ABCabc"; fun(s); } void test1() { char s[]="AAAAAaaaaaaaaaaaaAAAAAAAAAAAAAAAAaaaaaaaa"; fun(s); } int main() { test1(); return 0; } /* 難點在於求間距最小的 只要有元素相同,距離爲0,是最小的,而這些數據是離散的。 */ #include <iostream> using namespace std; void fun(int a[],int len) { //找到最大的數有多少個, 找最小的數有多少個,mmin找到間距最小的; int max=a[0],min=a[0],maxcount=0,mincount=0,mmin=a[0],mmincount=0; int b[len]; for(int i=0;i<len;i++) { if(a[i]>max)max=a[i]; if(a[i]<min)min=a[i]; } for(int i=0;i<len;i++) { if(a[i]==max)maxcount++; if(a[i]==min)mincount++; } cout<<maxcount<<"wwwwwwwwwwwwwwwwwwwwwwwwwww"<<endl; cout<<"maxdis : "<<maxcount*mincount<<endl; } int test0() { int a[]={1,2,3,4,5,6};// max : 1 min :5 int len=sizeof(a)/sizeof(a[0]); fun(a,len); } void test1() { int a[]={1,1,1,2,3,4,111,111,111};//max:9 min :6 //int a[]={1,1,1,2,2,3,4,111,111,111};//max:9 min :6+1 //int a[]={1,2,3,4,5,6};//max:1 min :5 //int a[]={6,6,6,6,6,6};//max:15 min :15 int len=sizeof(a)/sizeof(a[0]); fun(a,len); } int main() { //排序了纔好處理,這裏測試 均直接傳排好序的數組 test1(); return 0; } 學習連接http://blog.csdn.net/minsophia/article/details/51836367