我自创的一种高精,用double存,输出时是按位输出,但是不知为何只有60分:
#include<bits/stdc++.h>
using namespace std;
double dp[105][105];
short a[105][105],n,b[100];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)cin>>a[i][j];
}
dp[1][1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(dp[i][j]>=1&&a[i][j]!=0){
if(j+a[i][j]<=n)dp[i][j+a[i][j]]+=dp[i][j];
if(i+a[i][j]<=n)dp[i+a[i][j]][j]+=dp[i][j];
}
}
}
int nn=0;
while(dp[n][n]>=1){
b[nn++]=short(dp[n][n]-floor(dp[n][n]/10)*10);
if(b[nn]==0){
dp[n][n]/=10;
}
else {
dp[n][n]=floor(dp[n][n]/10)*10;
}
}
for(int i=nn-1;i>=0;i--)cout<<b[i];
return 0;
}
请帮我查一下错,谢谢!