#33476: C++ vector解法


alex950301 (alex0301)

學校 : 新北市立新莊高級中學
編號 : 141423
來源 : [210.71.71.234]
最後登入時間 :
2024-05-15 18:43:02
j606. 2. 造字程式 -- 2023年1月APCS | From: [61.64.1.159] | 發表日期 : 2023-01-09 00:14

在這邊提供一下我的想法:

 

  1. 利用一個一維陣列存每排數字對應到的新字串
  2. 依序把每一次的字串存入二維vector中
  3. 重複  r  次,輸出對應欄(column)的值 

 

 

可以參考的做法:

 

#include <iostream>
#include <vector>
using namespace std ;
int main() {
    ios_base::sync_with_stdio(0) ;
    cin.tie(0) ;
    
    int k , q , r ;
    string s ;
    while( cin >> k >> q >> r ) {
        int a[q][k] ;
        cin >> s ;
        for( int i = 0 ; i < q ; i++ ) {
            for( int j = 0 ; j < k ; j++ ) {
                cin >> a[i][j] ;
            }
        }
        vector< vector<char> > vec ;
        for( int i = 0 ; i < q ; i++ ) {
            char turn[k] ;
            for( int j = 0 ; j < k ; j++ ) {
                turn[--a[i][j]] = s[j] ;        //用一個一維陣列儲存數字對應到的字串
            }
            vector<char> temp ;                 //存入一維vector
            for( int j = 0 ; j < k ; j++ ) {
                temp.push_back(turn[j]) ;
            }
            vec.push_back(temp) ;               //有一維vector才能再存入二維vector中
            
            for( int i = 0 ; i < k ; i++ ) {    //更新s值
                s[i] = temp[i] ;
            }
        }
        
        for( int i = 0 ; i < r ; i++ ) {
            for( int j = 0 ; j < q ; j++ ) {
                cout << vec[j][i] ;
            }
        }
        cout << endl ;
    }
    return 0 ;
}

 
ZeroJudge Forum