競技プログラミングのべんきょうきろく

ブログ名からひと目でわかる圧倒的チラ裏

文字列から数値を読み込みたい人生だった

忘備録
ここらへんので手こずって今週やってたやるだけ問題に無駄に時間が掛かった感が否めない

s[i] は charのポインタとかどーのこーので、atoiがうまく使えないし、一文字だけ抽出してあれこれできない

string s;
cin >> s;// s = "1232100";
int n = atoi(s[2]); // n = '3' とおもってやろうとしても
//n = 32100 になるとかでうまくできない、くるちい

下の方法がいい感じ, char も結局は1ビット?の数値なので '0 'を基準化する

int n = s[2] - '0'; // このとき n = 3  , '3' - '0'をやってる
n = s[3] - '0'; //このとき n = 2


二値記号を0とか1に割り振りたいとき

int n = 3;
int m = 4;
string s1 = "LRLR"; // L と R からなる符号
string s2 = "RRLL";
string s3 = "LLRL";
int map[3][4];

map[0][0] = abs(s1[0] - 'R')/abs('L' - 'R'); // s1[0] = 'L'ならmap[0][0] = 1, 'R'なら 0

//もし、下の場合だと、s1[0] = 'R' のときに map[0][0]が1 、'L'なら0
// map[0][0] = abs(s1[0] - 'L')/abs('R' - 'L');

//こんな感じで残りもうまい感じに変換する
//map は下のようになる
//1, 0, 1, 0
//0, 0, 1, 1
//0, 0, 1, 0

n値符号は素直にswitchとかのほうがいいのでは・・・