Input
A B C
Output
sorted
Input
A B
A C
Output
Not sorted
Input
A B
B A
Output
Not sorted
也就是说,从文件中读入的字母是假定顺序的,求整个文件字符是否有序。
程序如下:
// NormalTest.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include "NormalTest.h"
#include "iostream"
#include "string"
#include "fstream"
#include "sstream"
#include "vector"
#include "set"
using namespace std;
const int N=4;
int count=0;
int main()
{
ifstream in("C:\\copy.txt");
vector<char> v;
set<char> s;
int a[N][N]={0},b[N][N]={0};
string line;
while(getline(in,line)){
istringstream is(line);
char c;
v.clear();
while(is>>c)
v.push_back(c);
s.insert(c);
for(int i=0;i<v.size()-1;i++)
if(v[i]<v[(i+1)])
a[v[i]-'A'][v[i+1]-'A']=1;
}//while
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
for(int k=0;k<N;k++)
{
if((a[i][j]==1&&a[j][k]==1)&&i!=k&&i!=j&&j!=k)
{a[i][k]=1;}
}//if
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
{
cout<<a[i][j]<<" ";
count++;
if(count%4==0) cout<<endl;
}
bool flag=true;
for(int i=0;i<N;i++)
for(int j=i+1;j<N;j++)
if(a[i][j]==1) continue;
else flag=false;
if(flag==true) cout<<"sorted"<<endl;
else cout<<"Not Sorted"<<endl;
}