(メモリマクロ)機能の問題

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/weixin_45697774/article/details/102720979

(チキン間違ったタイトルのディッシュ)ロサンゼルス間違ったタイトルのレコードがバレー
このレビューは私自身の使用です!
私は誰かの他の人のコードをコピーしてきました!侵略削除(* /ω\ *)
ここに画像を挿入説明
メモリマクロ

#define W_MEM(x,y,z) (w_mem[x][y][z] ? w_mem[x][y][z] : w_mem[x][y][z] = w(x, y, z))

Wが懇願していることを意味し、Wを返し、または、彼らはW値を代入してから返すように努めてまいります。
解決の数を減らすタイムアウト防ぐ
再帰+メモリ+マクロ機能を
直接ライン上のメモリマクロを定義

#include<bits/stdc++.h>
using namespace std;
#define W_MEM(x,y,z) (w_mem[x][y][z] ? w_mem[x][y][z] : w_mem[x][y][z] = w(x, y, z))
int a=1,b=1,c=1;
int w_mem[25][25][25];
int w(int a, int b, int c){
    if(a<=0 || b<=0 || c<=0) return 1;
    if(a > 20 || b > 20 || c > 20) return W_MEM(20,20,20);
    if(a < b && b < c) return W_MEM(a,b,c-1)+W_MEM(a,b-1,c-1) - W_MEM(a,b-1,c);
    return W_MEM(a-1,b,c)+W_MEM(a-1,b-1,c)+W_MEM(a-1,b,c-1) - W_MEM(a-1,b-1,c-1);
}
int main(){
    while(1){
        cin>>a>>b>>c;
        if(a==-1 && b==-1 && c==-1) break;
        cout<<"w("<<a<<", "<<b<<", "<<c<<") = "<<w(a,b,c)<<endl;
    }
}

おすすめ

転載: blog.csdn.net/weixin_45697774/article/details/102720979