一直沒有輸出
題目:
輸入資料包含3行。
第一行是一個整數N,N<=100,代表了向量的維數。
第二行是N個非負整數,給出了v1 中的元素,每個整數都在32位整數的范圍內,用一個空格隔開。
第二行是N個非負整數,給出了v2 中的元素,每個整數都在32位整數的范圍內,用一個空格隔開。
要求:
輸出一個整數,代表了通過重排向量中的分量,所能夠獲得的最小內積值。資料保證了最后結果在32位整數的范圍內。
例子:
輸入:
5
1 2 3 4 5
1 0 1 0 1
輸出:
6
我的想法是用兩個冒泡排序使兩個陣列一個從大到小排序,一個從小到大排序,最后進行相乘累加,可是一直輸出不來
下面是我寫的:
#include<iostream>
using namespace std;
int small(int a[], int b[],int N)
{
int sum=0;
int i,j;
for (i = 0; i < N; i++)
{
for (j = i; j < N - i - 1; j++)
{
if (a[j] < a[j + 1])
{
int temp1 = a[j];
a[j] = a[j + 1];
a[j + 1] = temp1;
}
}
}
for (i = 0; i < N; i++)
{
for (j = i; j < N - i - 1; j++)
{
if (b[j] > b[j + 1])
{
int temp2 = b[j];
b[j] = b[j = 1];
b[j + 1] = temp2;
}
}
}
for (i = 0; i < N; i++)
sum += (a[i] * b[i]);
return sum;
}
int main()
{
int sum=0;
int N = 5;
int a[] = { 1,2,3,4,5 };
int b[] = { 1,0,1,0,1 };
sum = small(a, b, N);
cout << sum << endl;
system("pause");
}
uj5u.com熱心網友回復:
b[j] = b[j = 1];uj5u.com熱心網友回復:
供參考:#include<iostream>
using namespace std;
int small(int a[], int b[],int N)
{
int sum=0;
int i,j;
for (i = 0; i < N; i++)
{
for (j = 0; j < N - i - 1; j++)//for (j = i; j < N - i - 1; j++)
{
if (a[j] < a[j + 1])
{
int temp1 = a[j];
a[j] = a[j + 1];
a[j + 1] = temp1;
}
}
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N - i - 1; j++)//for (j = i; j < N - i - 1; j++)
{
if (b[j] > b[j + 1])
{
int temp2 = b[j];
b[j] = b[j + 1]; //b[j] = b[j = 1];
b[j + 1] = temp2;
}
}
}
for (i = 0; i < N; i++)
sum += (a[i] * b[i]);
return sum;
}
int main()
{
int sum=0;
int N = 5;
int a[] = { 1,2,3,4,5 };
int b[] = { 1,0,1,0,1 };
sum = small(a, b, N);
cout << sum << endl;
system("pause");
}
uj5u.com熱心網友回復:
才發現打錯了!!!謝謝!!![face]monkey2:019.png[/face][face]monkey2:019.png[/face][face]monkey2:019.png[/face]uj5u.com熱心網友回復:
謝謝!!我發現我冒泡也打錯了!哭了[face]monkey2:019.png[/face]轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265118.html
標籤:新手樂園
上一篇:怎么把OBS的源串列改成網格模式
