- 题解
递归3
- @ 2025-10-1 12:30:06
665 希蒙的特殊Function
#include<bits/stdc++.h>
using namespace std;
int arr[23][23][33];
long long fun(long a,long b,long c)
{
if(a<=0||b<=0||c<=0) return 1;
if(a>20||b>20||c>20) return fun(20,20,20);
if(arr[a][b][c]) return arr[a][b][c];
if(a<b&&b<c) return arr[a][b][c]=fun(a,b,c-1)+fun(a,b-1,c-1)-fun(a,b-1,c);
else return arr[a][b][c]=fun(a-1,b,c)+fun(a-1,b-1,c)+fun(a-1,b,c-1)-fun(a-1,b-1,c-1);
}
int main()
{
long long a,b,c;
do
{
cin>>a>>b>>c;
if(a==-1&&b==-1&&c==-1) break;
cout<<"w("<<a<<", "<<b<<", "<<c<<") = ";
cout<<fun(a,b,c)<<endl;
}
while(a!=-1&&b!=-1&&c!=-1);
return 0;
}
分型盒-1
#include <bits/stdc++.h>
#define DEBUG(var) cout << "[DEBUG]" << #var << " = " << var << endl
using namespace std;
const int t = int(pow(3, 7));
char arr[t][t] = {0};
void print(int n, int x, int y) {
if (n == 1)
arr[x][y] = 'H';
else {
int t = int(pow(3, n - 1 - 1));
print(n - 1, x, y);
print(n - 1, x + t + t, y);
print(n - 1, x + t, y + t);
print(n - 1, x, y + t + t);
print(n - 1, x + t + t, y + t + t);
}
}
int main() {
int n;
scanf("%d", &n);
print(n, 0, 0);
int temp = int(pow(3, n - 1));
for (int i = 0; i < temp; i++) {
for (int j = 0; j < temp; j++) {
if (arr[i][j])
printf("X");
else
printf(" ");
}
printf("\n");
}
return 0;
}
0 条评论
目前还没有评论...