POJ-1094 Sorting it All Out
生活随笔
收集整理的這篇文章主要介紹了
POJ-1094 Sorting it All Out
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個字母,則入度加一,并把小的當成大的字母的一個的出度,如果有一個入度為0就輸出,并把其其所有出度點減一個入度,循環n次,若一次循環出兩個字母,則排序失敗,但不跳出,因為一旦遇到了一次循環根本無法輸出,則輸入結束后輸出Inconsistency found after t relations.,t為這條指令的序號(每輸入一個指令就判斷),當然,若當次就能判斷順序,我們就把t和輸出順序存下來,到最后再輸出。
注意:如果排序已經成功,則不用再管有沒有回路的情況,若已存在回路的情況,則不再管排序能不能成功,所以,當已經存在回路或已經成功排序時就不用再做處理了。
using namespace std; int n,m,sh=0,a[1001]={0},t,c[10001]={0},b[101][101]={0},loc[1001]={0},d[10001]={0}; int a1[10000001],b1[10000001]; int main(){string s;while(cin>>n>>m&&n!=0&&m!=0){//只要還在輸入for(int i=1;i<=m;i++){cin>>s;、、輸入指令if(s[1]=='>'){//如果中間的是大于b[(s[0]-'A'+1)][0]++;b[(s[0]-'A'+1)][b[(s[0]-'A'+1)][0]]=(s[2]-'A'+1);b[(s[0]-'A'+1)][b[(s[0]-'A'+1)][0]]=i;a[(s[2]-'A'+1)]++;d[(s[2]-'A'+1)]++;}else {//如果中間的是小于b[(s[2]-'A'+1)][0]++;b[(s[2]-'A'+1)][b[s[2]-'A'+1][0]]=(s[0]-'A'+1); a[(s[0]-'A'+1)]++;d[(s[0]-'A'+1)]++; }if(sh==0&&z==0){//如果還沒排出序而且還不存在回路,則進行模擬bool panda=0;for(int l=1;l<=n;l++){//要用其他東西存起來,不然排序失敗就完了c[l]=a[l];}int BS=0;for(int s=1;s<=n;s++){int ans=0;for(int j=1;j<=n;j++){if(a[j]==0){c[j]--;BS++;//輸出的字母的個數加1ans++;if(ans==2){//有多個入度為0的則排序失敗,但還有繼續排序panda=1;}loc[s]=j;//輸出順序int k=b[j][0]; for(int t=1;t<=k;t++){c[b[j][t]]--;}}if(ans==2){panda=1;}}for(int l=1;l<=n;l++){a[l]=c[l];}if(ans==0&&BS!=n){//如果不存在入度為0的點且還沒有輸出完,則存在回路sh=2;t=i;panda=1;break;}else if(ans>=2){panda=1;} } if(panda==0){//排序成功if(z==0)z=i; } } for(int ss=1;ss<=n;ss++){a[ss]=c[ss]=d[ss]; } } if(z!=0){//輸出cout<<"Sorted sequence determined after "<<z<<" relations: "; for(int ll=n;ll>=1;ll--)cout<<char(loc[ll]+'A'-1); cout<<"."<<endl; } else { if(sh==0) cout<<"Sorted sequence cannot be determined."<<endl; else if(sh==2)cout<<"Inconsistency found after "<<t<<" relations."<<endl; } sh=0;z=0; for(int i=1;i<=26;i++){//清0for(int j=0;j<=26;j++){b[i][j]=e[i][j]=0;vis[i][j]=0;} } for(int t=1;t<=26;t++){ a[t]=c[t]=d[t]=0; } } }
轉載于:https://www.cnblogs.com/c201904xyorz/p/9990797.html
總結
以上是生活随笔為你收集整理的POJ-1094 Sorting it All Out的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让数字营销向人工智能借一双慧眼
- 下一篇: node-sass安装失败解决方法