1. 程式人生 > >算法設計與分析入門學習練習之二

算法設計與分析入門學習練習之二

oid cnblogs 練習 find end 算法設計 for bsp 一行

//計算1/1!-1/3!+1/5!-1/7!+…+(-1)^(n+1)/(2n-1)!
float mathTest(int n){

    int sign = 1;
    float sum = 1, t = 1;
    for (int i = 1; i <= n - 1; i++)
    {
        sign = sign*(-1);
        t = t*(2 * i)*(2 * i + 1);
        sum = sum + sign / t;
        
    }
    return sum;
}
//判斷一個是否為完數(如:28=1+2+4+7+14)
//尋找(0,n]以內的所有完數 void IsPnum(int n){ int i, a[100]; for (i = 1; i <= n;i++) { int s = 1, k = 0; for (int j = 2; j < i;j++) { if ((i%j)==0) { s = s + j; a[k] = j; k++; } }
if ((i==s)&&(s!=1)) { cout << s << ",it‘s factors are:" << "1"; for (int i = 0; i < k;i++) { cout << "," << a[i]; } cout << endl; } } } //求矩陣的鞍點,即行上最小而列上最大的點
void FindAnDian(){ //輸入一個n*n的矩陣 cout << "input n*n matric: " << endl; int a[3][3], n = 3, col, row ,AD=0; //cin >> n; for (int i = 0; i < n;i++) { for (int j = 0; j < n;j++) { cin >> a[i][j]; } } //打印矩陣 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout<< a[i][j]; } cout << endl; } //尋找鞍點 for (int i = 0; i < n;i++) { int t = a[i][0]; for (int j = 0; j < n;j++) { if (t>a[i][j]) { t = a[i][j]; col = j; } } for (row = 0; row < n;row++) { if (t<a[row][col]) { break;//如果第col列中有元素大於t;則直接終止判斷是否為列最大元素 } } if (row<n) { continue;//如果row<n即證明第i行的最小元素不是第col列的最大元素直接結束本次循環。尋找下一行元素的最小值。 } else { cout << "the result is a[" << i << "]" << "[" << col << "]" << endl; AD = 1; break; } } if (AD==0) { cout << "Non result" << endl; } }

算法設計與分析入門學習練習之二