這幾天我一直在瘋狂試圖找出這個座位分配問題,並想知道如果有人可以幫助我。C++電影座位
指示說:
假設一組N個學生一起到達類(或電影),並且恰好n個座位可供consectutively爲1行。考慮到對座位的偏好,你需要確定學生可以坐下來滿足偏好的數量。
輸入
輸入會唯一形式的鍵盤。輸入將包含多個測試用例。每個測試用例都以兩個整數0 < n和0≤m開始,其中n是要就座的學生人數,m是偏好數。爲簡單起見,假設學生從0到n - 1編號。然後是m行,每行描述一個偏好,其中一行由三個整數a,b和c組成,滿足0≤a< b < n和0 < | C | < n。如果c是正數,那麼青少年a和b想要最多坐在c個座位上。如果c是負數,那麼a和b想要至少坐在-c座位上。輸入的端部通過由N = M的線路發出信號= 0。
輸出
每個測試情況下的輸出是包含的可能的就座裝置的數量爲滿足該組的單個線所有的輸入約束。
採樣輸入
0 1 -2
樣本輸出
#include <vector>
#include <algorithm>
#include <string>
#include <iostream>
#include <iterator>
using namespace std;
struct Preference
{
int a;
int b; //Struct with three preferences
int c;
};
int main()
{
int a,b,c,students,numpref;
int count = 0;
vector<Preference> prefs; //Vector with struct to store preferences
Preference case1;
cout<<"Enter number of students and preferences: ";
cin>>students>>numpref; //Total Number of students and preferences are entered
for(int i = 0; i<=numpref; i++)
{
cin>>case1.a>>case1.b>>case1.c;
prefs.push_back(case1); //Stores preferences in vector
cout<<endl;
}
vector<int> v2(a); //Second vector created to store list of students
sort(v2.begin(), v2.end());
while(next_permutation(v2.begin(), v2.end()))
//Finds all permutations of student seating
{
}
system("PAUSE");
return 0;
}
我知道這不完全的,但我堅持主要是想弄清楚如何喜好的每一行比較正確的排列,然後計算結果。我考慮了將用戶放入的向量中的每個元素的位置(例如:在示例中爲0,1),並檢查每個發現的排列是否有0和1之間至少有2個位置。但那不會起作用。
你爲什麼說這是行不通的?太慢了? –
那麼每次我嘗試用if語句來比較向量中兩個變量之間的距離時,結果都不會正確。 –
您是否創建了一個函數,可以給您兩個特定學生之間的距離? –