HDU 6330.Problem L. Visual Cube-模拟到上天-输出立方体 (2018 Multi-University Training Contest 3 1012)
这个题就是输出立方体。当时写完怎么都不过,后来输出b<c的情况,发现这里写挫了,判断失误。加了点东西就过了,mdzz。。。
代码:
1 //1012-模拟乱写输出立方体 2 #include<iostream> 3 #include<cstdio> 4 #include<cstring> 5 #include<algorithm> 6 #include<cmath> 7 #include<cstdlib> 8 using namespace std; 9 typedef long long ll; 10 const int maxn=1e5+10; 11 12 char a[200][200]; 13 int main() 14 { 15 int t; 16 scanf("%d",&t); 17 while(t--){ 18 int aa,b,c; 19 scanf("%d%d%d",&aa,&b,&c); 20 int x=c*2+1+b*2,y=aa*2+1+b*2; 21 for(int i=1;i<=x;i++){ 22 for(int j=1;j<=y;j++) 23 a[i][j]='.'; 24 } 25 for(int i=1;i<=x;i++){ 26 if(i<=2*b){ 27 if(i%2!=0){ 28 for(int j=2*b-i+2;j<=2*b-i+2+2*aa;j++){ 29 if((j-2*b-i+2+1)%2!=0) a[i][j]='+'; 30 else a[i][j]='-'; 31 } 32 for(int j=2*b-i+2+2*aa+2;j<=y;j+=2) 33 a[i][j]='+'; 34 } 35 else{ 36 for(int j=2*b-i+2;j<=y;j+=2){ 37 a[i][j]='/'; 38 } 39 for(int j=2*b-i+2+2*aa+1;j<=y;j+=2) 40 a[i][j]='|'; 41 } 42 } 43 else if((i-2*b)>0&&(i-2*b)<=2*(c-b)+1){ 44 if((i-2*b)%2!=0){ 45 for(int j=1;j<=2*aa+1;j++){ 46 if((j-1+1)%2!=0) a[i][j]='+'; 47 else a[i][j]='-'; 48 } 49 for(int j=2*aa+1+2;j<=y;j+=2) 50 a[i][j]='+'; 51 } 52 else{ 53 for(int j=1;j<=2*aa+1;j+=2) 54 a[i][j]='|'; 55 for(int j=2*aa+1+1;j<=y;j++){ 56 if((j-2*aa-1-1+1)%2!=0) a[i][j]='/'; 57 else a[i][j]='|'; 58 } 59 } 60 } 61 else{ 62 if((i-(2*c+1))%2!=0){ 63 for(int j=1;j<=2*aa+1;j+=2){ 64 a[i][j]='|'; 65 } 66 for(int j=2*aa+1+1;j<=y-(i-(2*c+1));j++){ 67 if((j-2*aa-1-1+1)%2!=0) a[i][j]='/'; 68 else a[i][j]='|'; 69 } 70 } 71 else{ 72 for(int j=1;j<=2*aa+1;j++){ 73 if((j-1+1)%2!=0) a[i][j]='+'; 74 else a[i][j]='-'; 75 } 76 for(int j=2*aa+1+2;j<=y-(i-(2*c+1));j+=2) 77 a[i][j]='+'; 78 } 79 } 80 } 81 if(c<b){//这种情况要判断一下 82 for(int i=2*c+1+1;i<=x;i++){ 83 for(int j=y;j>=y-i+2*c+2;j--) 84 a[i][j]='.'; 85 } 86 } 87 for(int i=1;i<=x;i++){ 88 for(int j=1;j<=y;j++){ 89 cout<<a[i][j]; 90 } 91 cout<<endl; 92 } 93 } 94 }
。。。