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 条评论

目前还没有评论...