最初我有用戶輸入十進制數(0 - 15),我會把它轉換成二進制數。 說這些數字寫入文本文件,如圖所示。這些數字按1的數字排列。短劃線 - 用於分隔不同的組1.我要讀取此文件,並將一個組的字符串與下面的組中的所有字符串進行比較,即,組1中的所有字符串與組2中的所有字符串進行比較,以及第2組 - 第3組。
該交易是隻允許一列0/1的差異,並且該列由字母t代替。如果遇到不止一列的差異,則不填寫。 所以說組2,0001與組3,0011,只有第二列是不同的。然而,0010和0101是兩列不同。
結果將被寫入到另一個文件.....
此刻,當我讀這些字符串,我使用矢量串。我遇到了困難。重要的是我必須一次訪問一個字符,這意味着我已經將矢量字符串分解爲矢量char。但似乎可能有更簡單的方法來做到這一點。
我甚至想過一個哈希表 - 鏈表。將組1分配給H [0]。 H [current_group + 1]與H [current-group]進行比較。但除了第一個比較(比較1和0)之外,超出此範圍的比較在這種散列鏈接方式下不起作用。所以我放棄了這一點。
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;
int main() {
ifstream inFile("a.txt");
vector<string> svec;
copy(istream_iterator<string>(inFile), istream_iterator<string>(), back_inserter(svec));
copy(svec.begin(), svec.end(), ostream_iterator<string>(cout,"\n"));
for(int i = 0; i < svec.size(); i++)
{
cout << svec[i] << " ";
}
inFile.close();
return 0;
}
這是它寫入文件的示例代碼....但就像我說的,載體的整個交易似乎在我的情況是不切實際....
任何幫助表示讚賞。感謝
看起來非常像'家庭作業'請標記這樣...提示:按位操作,特別是異或會有所幫助。 – mjv 2010-12-06 01:19:51